比较2数据表C#
本文关键字:数据表 比较 | 更新日期: 2023-09-27 18:25:57
我有两个数据表,它们的数据相似,但id字段完全不同。数据列也有不同的名称这就是我的意思:
Table1
id dataIn1
010 Data000
123 Data1
222 Data2
323 Data4
443 Data6
Table2
id dataIn2
551 Data1
676 Data2
111 Data3
625 Data4
444 Data5
665 Data6
我想要一个新的DataTable3,它在Table2中有数据,但在Table1中没有。注意,表1中有一行不在表2中,但我不在乎
Table3
id dataIn3
111 Data3
444 Data5
我尝试过这些方法:
tb2.Merge(tb1);
DataTable tb3 = tb2.GetChanges();
但tb3
返回null
这返回了一个数据表,但行是错误的
var notIn1 = tb2.AsEnumerable().Select(r => r.Field<string>("dataIn2"))
.Except(tb1.AsEnumerable().Select(r => r.Field<string>("dataIn2")));
DataTable tb3 = (from row2 in tb2.AsEnumerable()
join row3 in notIn1
on row2.Field<string>("dataIn2") equals row3
select row2).CopyToDataTable();
您可以这样做:
IEnumerable<int> val_table1 = Table1.AsEnumerable().Select(val=> (int)val["dataIn1"]);
IEnumerable<int> val_table2 = Table2.AsEnumerable().Select(val=> (int)val["dataIn2"]);
IEnumerable<int> val_notinTable1= val_table2.Except(val_table1);