我有以下场景:
表 A 有 50 条记录,表 B 有 2 条记录。
我需要定义一个新表,比如 TableDiff,它应该包含表 A 中不存在于表 B 中的 48 条记录
我的问题是表 A 和表 B 不相同,但我有两个表中都存在的字段 rowId
,我需要使用它进行比较。
最佳答案
使用 Enumerable.Except
和 Enumerable.Join
的一种方法:
var aIDs = TableA.AsEnumerable().Select(r => r.Field<int>("RowID"));
var bIDs = TableB.AsEnumerable().Select(r => r.Field<int>("RowID"));
var diff = aIDs.Except(bIDs);
DataTable tblDiff = (from r in TableA.AsEnumerable()
join dId in diff on r.Field<int>("RowID") equals dId
select r).CopyToDataTable();
这是 linq-to-objects 的“左连接”方法:
DataTable tblDiff = (from rA in TableA.AsEnumerable()
join rB in TableB.AsEnumerable()
on rA.Field<int>("RowID") equals rB.Field<int>("RowID") into joinedRows
from ab in joinedRows.DefaultIfEmpty()
where ab == null
select rA).CopyToDataTable();
关于c# - 根据一列获取两个数据表之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17670668/