减去具有相同shema的两个DataTable,E.g减去SQL查询

时间:2016-06-16 16:43:13

标签: c# .net datatable

我有两个具有相同模式的DataTable(相同的列名称和类型)。我想获取出现在第一个而不是第二个中的行。 有人可以帮助我吗?感谢。

3 个答案:

答案 0 :(得分:1)

值得庆幸的是,MS已创建extension methods for DataTable,可让您使用Linq方法(如Except)查询数据行,并编写class that implements IEqualityComparer<DataRow>来比较DataRow实例按列值:

var rows = dt1.AsEnumerable()
              .Except(dt2.AsEnumerable(),DataRowComparer.Default);

答案 1 :(得分:0)

我会写这样的东西:

var onlyIn1 = dataTable1.Where( row1 => !dataTable2.Rows.Any( row2 => row1["CustomerKey"] == row2["CustomerKey"]) ).ToList();

答案 2 :(得分:0)

你可以试试这个:

var onlyIn1 = db.Table1.Except(db.Table2).ToList();

我从不对此进行测试,但它应该像T-SQL的EXCEPT

一样工作