比较两个DataTables的非匹配记录C#

时间:2017-06-29 19:48:24

标签: c# datatable compare

我很好奇如何比较C#中的两个数据表。我有两个数据表,数据表一包含FirstName和LastName,数据表2包含Field1,Field2,First_Name和Last_Name。

我想查找数据表1中存在的数据表2中不存在的记录。以前有人这样做了吗?任何帮助,将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:3)

使用LINQ是最自然的,但您需要从DataTable转换为使用Except

var In_dt1_only = dt1.AsEnumerable().Select(r => new { first = r.Field<string>("First"), last = r.Field<string>("Last")}).Except(dt2.AsEnumerable().Select(r => new { first = r.Field<string>("First"), last = r.Field<string>("Last")}));

如果您需要原始DataRow,则可以使用Where代替:

var datarows_in_dt1_only = dt1.AsEnumerable().Where(dr1 => !dt2.AsEnumerable().Any(dr2 => dr1.Field<string>("First") == dr2.Field<string>("First") && dr1.Field<string>("Last") == dr2.Field<string>("Last")));