2 DataTable之间的差异

我有2个DataTable,我想创建第三个DataTable,它包含DataTable 1和DataTable 2之间的区别。

例如,DataTable1具有原始数据,而DataTable 2只是一个副本,就像复制一样。 但是当您在DataTable1中插入新行时,DataTable2只插入相同的行。 现在我的代码在DataTable1和DataTable2之间进行比较,如果不是等于(插入1行或更多行),DataTable2再次记录来自DataTable1的所有数据。

如何执行select命令,执行此差异并将这些数据记录在第三个DataTable中?

我会考虑有两列来识别表(col1,col2)

 var rowsOnlyInDt1 = dt1.AsEnumerable().Where(r => !dt2.AsEnumerable() .Any(r2 => r["col1"].Trim().ToLower() == r2["col1"].Trim().ToLower() && r["col2"].Trim().ToLower() == r2["col2"].Trim().ToLower())); DataTable result = rowsOnlyInDt1.CopyToDataTable();//The third table 

尝试这样的事情:

 table1.Merge(table2); DataTable changesTable = table1.GetChanges(); 

只使用SQL,您可以使用UNION轻松找到差异,这里有一篇关于这个主题的优秀文章: http : //weblogs.sqlteam.com/jeffs/archive/2004/11/10/2737.aspx

当表匹配时,查询将返回空行集,否则返回不同的行。