我很好奇如何比较C#中的两个数据表。我有两个数据表,数据表一包含FirstName和LastName,数据表2包含Field1,Field2,First_Name和Last_Name。
我想查找数据表1中存在的数据表2中不存在的记录。以前有人这样做了吗?任何帮助,将不胜感激。谢谢!
答案 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")));