110,539
社区成员
发帖
与我相关
我的任务
分享
DataTable SourceDT = new DataTable();
SourceDt.columns.Add("Id",System.Type.GetType("System.String"));
SourceDt.columns.Add("Name",System.Type.GetType("System.String"));
SourceDt.columns.Add("Age",System.Type.GetType("System.Int32"));
SourceDt.columns.Add("Sex",System.Type.GetType("System.String"));
sourceDT.Rows.Add(new object[] { "10001", "李一", 24, "男" });
sourceDT.Rows.Add(new object[] { "10001", "王二", 23, "男" });
sourceDT.Rows.Add(new object[] { "10001", "孙三", 24, "女" });
sourceDT.Rows.Add(new object[] { "10002", "李四", 23, "男" });
sourceDT.Rows.Add(new object[] { "10002", "王五", 24, "女" });
sourceDT.Rows.Add(new object[] { "10003", "冯六", 25, "男" });
sourceDT.Rows.Add(new object[] { "10003", "陈七", 22, "女" });
sourceDT.Rows.Add(new object[] { "10003", "刘八", 20, "女" });
sourceDT.Rows.Add(new object[] { "10004", "周九", 26, "男" });
sourceDT.Rows.Add(new object[] { "10005", "周十", 21, "女" });
sourceDT.Rows.Add(new object[] { "10006", "孙A", 22, "女" });
sourceDT.Rows.Add(new object[] { "10007", "邹B", 21, "女" });
sourceDT.Rows.Add(new object[] { "10008", "王C", 25, "男" });
DataTable Dt1 = SourceDT.Clone();
DataTable Dt2 = SourceDT.Clone();
DataTable newDT = SourceDT.Copy();
int[] rownum = SourceDT.Rows.Count();
for(int i=0;i<SourceDT.Rows.Count;i++)
{
rownum[i] = SourceDt.Rows.Count + 1;
}
foreach(DataRow rw in SourceDT)
{
if(SourceDT.select("Id = '"+rw["Id"]+"'").Length > 1)
{
Dt1.ImportRow(rw);
}
}
foreach(DataRow rw2 in Dt1)
{
if(Dt2.select("Id = '"+rw2["Id"]+"'").Length == 0)
{
Dt2.ImportRow(rw2);
}
}
for(int i=0;i<newDT.Rows.Count;i++)
{
for(int j=0;j<Dt2.Rows.Count;j++)
{
if(newDt.Rows[i]["Id"].ToString() == Dt2.Rows[j]["Id"].ToString())
{
rowNum[i] = i;
}
}
}
for(int m=newDT.Rows.Cout - 1;m>=0;m--)
{
if(RowNum[m] < newDT.Rows.Count)
{
newDT.Rows.RemoveAt(m)
}
}
//那么这个newDT便为我想要的结果了~
[/quote]
lz 应该学习下hdhai9451用的linq语法,简洁实用,还跟你熟悉的sql类似,容易掌握。。。
DataTable sourceDT = new DataTable("Table1");
sourceDT.Columns.Add("Id", System.Type.GetType("System.String"));
sourceDT.Columns.Add("Name", System.Type.GetType("System.String"));
sourceDT.Columns.Add("Age", System.Type.GetType("System.Int32"));
sourceDT.Columns.Add("Sex", System.Type.GetType("System.String"));
sourceDT.Rows.Add(new object[] { "10001", "李一", 24, "男" });
sourceDT.Rows.Add(new object[] { "10001", "王二", 23, "男" });
sourceDT.Rows.Add(new object[] { "10001", "孙三", 24, "女" });
sourceDT.Rows.Add(new object[] { "10002", "李四", 23, "男" });
sourceDT.Rows.Add(new object[] { "10002", "王五", 24, "女" });
sourceDT.Rows.Add(new object[] { "10003", "冯六", 25, "男" });
sourceDT.Rows.Add(new object[] { "10003", "陈七", 22, "女" });
sourceDT.Rows.Add(new object[] { "10003", "刘八", 20, "女" });
sourceDT.Rows.Add(new object[] { "10004", "周九", 26, "男" });
sourceDT.Rows.Add(new object[] { "10005", "周十", 21, "女" });
sourceDT.Rows.Add(new object[] { "10006", "孙A", 22, "女" });
sourceDT.Rows.Add(new object[] { "10007", "邹B", 21, "女" });
sourceDT.Rows.Add(new object[] { "10008", "王C", 25, "男" });
var groups = sourceDT.AsEnumerable().GroupBy(t => t["Id"].ToString());
foreach (var group in groups)
{
if (group.Count() > 1)
{
foreach (var row in group)
{
sourceDT.Rows.Remove(row);
}
}
}
DataTable Dt1 = SourceDT.Clone();
DataTable Dt2 = SourceDT.Clone();
DataTable newDT = SourceDT.Copy();
int[] rownum = SourceDT.Rows.Count();
for(int i=0;i<SourceDT.Rows.Count;i++)
{
rownum[i] = SourceDt.Rows.Count + 1;
}
foreach(DataRow rw in SourceDT)
{
if(SourceDT.select("Id = '"+rw["Id"]+"'").Length > 1)
{
Dt1.ImportRow(rw);
}
}
foreach(DataRow rw2 in Dt1)
{
if(Dt2.select("Id = '"+rw2["Id"]+"'").Length == 0)
{
Dt2.ImportRow(rw2);
}
}
for(int i=0;i<newDT.Rows.Count;i++)
{
for(int j=0;j<Dt2.Rows.Count;j++)
{
if(newDt.Rows[i]["Id"].ToString() == Dt2.Rows[j]["Id"].ToString())
{
rowNum[i] = i;
}
}
}
for(int m=newDT.Rows.Cout - 1;m>=0;m--)
{
if(RowNum[m] < newDT.Rows.Count)
{
newDT.Rows.RemoveAt(m)
}
}
//那么这个newDT便为我想要的结果了~
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using TestEDM;
using TestBLL;
using System.IO;
using System.Data;
namespace TestWebClient
{
public partial class Test : System.Web.UI.Page
{
List<Student> listStudent = new List<Student>();
protected void Page_Load(object sender, EventArgs e)
{
DistinctStudent();
}
private void DistinctStudent()
{
listStudent.Add(new Student { ID = "10001", Name = "李一", Age = 24, Sex = "男" });
listStudent.Add(new Student { ID = "10001", Name = "王二", Age = 23, Sex = "男" });
listStudent.Add(new Student { ID = "10001", Name = "孙三", Age = 24, Sex = "女" });
listStudent.Add(new Student { ID = "10002", Name = "李四", Age = 23, Sex = "男" });
listStudent.Add(new Student { ID = "10002", Name = "王五", Age = 24, Sex = "女" });
listStudent.Add(new Student { ID = "10003", Name = "冯六", Age = 25, Sex = "男" });
listStudent.Add(new Student { ID = "10003", Name = "陈七", Age = 22, Sex = "女" });
listStudent.Add(new Student { ID = "10003", Name = "刘八", Age = 20, Sex = "女" });
listStudent.Add(new Student { ID = "10004", Name = "周九", Age = 26, Sex = "男" });
listStudent.Add(new Student { ID = "10005", Name = "周十", Age = 21, Sex = "女" });
listStudent.Add(new Student { ID = "10006", Name = "孙A", Age = 22, Sex = "女" });
listStudent.Add(new Student { ID = "10007", Name = "邹B", Age = 21, Sex = "女" });
listStudent.Add(new Student { ID = "10008", Name = "王C", Age = 25, Sex = "男" });
var alist = listStudent.GroupBy(g => g.ID).Select(t => { return new { ID = t.Key, count = t.Count() }; });
var list = from a in listStudent join b in alist on a.ID equals b.ID where b.count == 1 select a;
foreach (var item in list)
{
Response.Write(item.ID + "---" + item.Name + "---" + item.Age + "---" + item.Sex + "</br>");
}
}
}
public class Student
{
static Student()
{ }
public string ID { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string Sex { get; set; }
}
}
打印结果:
10004---周九---26---男
10005---周十---21---女
10006---孙A---22---女
10007---邹B---21---女
10008---王C---25---男