2 DataTable之间的差异

时间:2011-09-26 20:10:03

标签: c# asp.net linq select datatable

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

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

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

3 个答案:

答案 0 :(得分:1)

尝试这样的事情:

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

我会考虑有两列来识别表(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