【问题标题】:Compare Two DataTables for Non-Matching Records C#比较两个数据表的不匹配记录 C#
【发布时间】:2017-06-29 19:48:23
【问题描述】:

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

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

【问题讨论】:

  • 你试过什么?发布您的代码
  • 我问是因为这是我以前没有做过的事情,即使是清楚地解释它是如何完成的链接也可以。我在谷歌上读过一些文章,但它们没有多大意义,或者作者有点困惑。我只是在这里要求一个面包屑来开始我的旅程。谢谢!

标签: c# datatable compare


【解决方案1】:

使用 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")}));

如果您需要原始的DataRows,可以使用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")));

【讨论】:

  • 好的,效果很好,我唯一要做的就是交换两个数据表,然后我得到了预期的结果。非常感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
  • 1970-01-01
  • 2010-10-14
  • 2021-03-01
  • 2017-09-30
相关资源
最近更新 更多