C# 比较表C中的2个数据

C# 比较表C中的2个数据,c#,datatable,C#,Datatable,我有两个数据表,数据相似,但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 6

我有两个数据表,数据相似,但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,它的数据在表2中,但不在表1中。请注意,表1中有一行,表2中没有,但我不关心它

Table3
 id      dataIn3
111      Data3
444      Data5
我尝试过以下方法:

tb2.Merge(tb1);
DataTable tb3 = tb2.GetChanges(); 
但tb3返回空值

这返回了一个datatable,但行是错误的

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);

我确实在StackOverlow上查看了一些解决方案,但它们对我不起作用。哦,实际上其中一个解决方案起了作用。我只是不知怎么错过了。