C# 将Datatable重复项与字典相结合,并使用重复的Datatable数据解决问题

C# 将Datatable重复项与字典相结合,并使用重复的Datatable数据解决问题,c#,.net,dictionary,datatable,datarow,C#,.net,Dictionary,Datatable,Datarow,我确实有另一个问题,我认为我在路上很顺利,只是意识到字典非常有用,但我需要能够真正使用我的数据表来循环 字典正确地显示了数据,但我在已编辑数据表上的循环清楚地显示了已编辑数据和旧数据 DataTable table 1=newdatatable(); 表1.列。添加(“ID”,类型(int)); 表1.列。添加(“重量”,类型(int)); 表1.列。添加(“名称”,类型(字符串)); 表1.列。添加(“品种”,类型(字符串)); 表1.Rows.Add(23,57,“Koko”,string

我确实有另一个问题,我认为我在路上很顺利,只是意识到字典非常有用,但我需要能够真正使用我的数据表来循环

字典正确地显示了数据,但我在已编辑数据表上的循环清楚地显示了已编辑数据和旧数据

DataTable table 1=newdatatable();
表1.列。添加(“ID”,类型(int));
表1.列。添加(“重量”,类型(int));
表1.列。添加(“名称”,类型(字符串));
表1.列。添加(“品种”,类型(字符串));
表1.Rows.Add(23,57,“Koko”,string.Empty);
表1.新增行数(44130,“Fido”,空);
表1.添加行(54130,“Jack”,空);
表1.新增行数(44130,“Thad”,空);
表1.行添加(64130,“John”,空);
表1.Rows.Add(23130,“Brian”,null);
表1.添加行(445130,“James”,空);
表1.行添加(64134,“Adam”,空);
Dictionary dict=新字典();
对于(int i=0;i
如果需要重复值列表,需要执行以下操作 我还没有在一系列的Datatable字段上尝试过,所以您需要使用两个不同的字段(ID字段和权重字段)进行测试

    DataTable table11 = new DataTable();
    table11.Columns.Add("ID", typeof(int));
    table11.Columns.Add("Weight", typeof(int));
    table11.Columns.Add("Name", typeof(string));
    table11.Columns.Add("Breed", typeof(string));
    table11.Rows.Add(23, 57, "Koko", string.Empty);
    table11.Rows.Add(44, 130, "Fido", null);
    table11.Rows.Add(54, 130, "Jack", null);
    table11.Rows.Add(44, 130, "Thad", null);
    table11.Rows.Add(64, 130, "John", null);
    table11.Rows.Add(23, 130, "Brian", null);
    table11.Rows.Add(445, 130, "James", null);
    table11.Rows.Add(64, 134, "Adam", null);

   var duplicate = table1.AsEnumerable()
       .Select(dr => dr.Field<int>("ID"))
       .GroupBy(x => x)
       .Where(g => g.Count() > 1)
       .Select(g => g.Key)
       .ToList();

   var duplicate2 = table1.AsEnumerable()
       .Select(dr => dr.Field<int>("Weight"))
       .GroupBy(x => x)
       .Where(g => g.Count() > 1)
       .Select(g => g.Key)
       .ToList();
DataTable11=新的DataTable();
表11.列。添加(“ID”,类型(int));
表11.列。添加(“重量”,类型(int));
表11.列。添加(“名称”,类型(字符串));
表11.列。添加(“品种”,类型(字符串));
表11.Rows.Add(23,57,“Koko”,string.Empty);
表11.新增行数(44130,“Fido”,空);
表11.添加行(54130,“Jack”,空);
表11.新增行数(44130,“Thad”,空);
表11.行。添加(64130,“John”,空);
表11.Rows.Add(23130,“Brian”,null);
表11.新增行数(445130,“James”,空);
表11.行添加(64134,“Adam”,空);
var duplicate=table1.AsEnumerable()
.Select(dr=>dr.Field(“ID”))
.GroupBy(x=>x)
.Where(g=>g.Count()>1)
.选择(g=>g.Key)
.ToList();
var duplicate2=table1.AsEnumerable()
.选择(dr=>dr.Field(“权重”))
.GroupBy(x=>x)
.Where(g=>g.Count()>1)
.选择(g=>g.Key)
.ToList();
如果要从数据表中删除重复项,请参阅此stackoverflow过帐


嗯,是的。您没有做任何事情来删除表1中的重复行,所以它们当然仍然存在。如何合并2行?我想通过创建一行来替换这些现有行您是否在寻找一种方法来检查datatable中是否存在重复值。。?如果有这样一种方法,我可以发布一个例子供你测试,你可以从中学习,你也会问很多问题,比如
我怎么做
当你可以用谷歌搜索时,你的最终目标是什么?拥有一个带有“合并”数据的DataTable?最终目标是在DataTable上循环,该DataTable将重复的行与各种特定的列组合在一起,但基于ID(实际数据类似于30列,所以我尝试使用jsfiddle表示法显示)
    DataTable table11 = new DataTable();
    table11.Columns.Add("ID", typeof(int));
    table11.Columns.Add("Weight", typeof(int));
    table11.Columns.Add("Name", typeof(string));
    table11.Columns.Add("Breed", typeof(string));
    table11.Rows.Add(23, 57, "Koko", string.Empty);
    table11.Rows.Add(44, 130, "Fido", null);
    table11.Rows.Add(54, 130, "Jack", null);
    table11.Rows.Add(44, 130, "Thad", null);
    table11.Rows.Add(64, 130, "John", null);
    table11.Rows.Add(23, 130, "Brian", null);
    table11.Rows.Add(445, 130, "James", null);
    table11.Rows.Add(64, 134, "Adam", null);

   var duplicate = table1.AsEnumerable()
       .Select(dr => dr.Field<int>("ID"))
       .GroupBy(x => x)
       .Where(g => g.Count() > 1)
       .Select(g => g.Key)
       .ToList();

   var duplicate2 = table1.AsEnumerable()
       .Select(dr => dr.Field<int>("Weight"))
       .GroupBy(x => x)
       .Where(g => g.Count() > 1)
       .Select(g => g.Key)
       .ToList();