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