【问题标题】:Compare two DataTables and return true or false if one row exists in the second table?如果第二个表中存在一行,比较两个 DataTable 并返回 true 或 false?
【发布时间】:2014-10-23 15:24:12
【问题描述】:

我想检查第二个数据表中是否存在数据表值,它将返回真或假。

 DataTable table1;
 DataTable table2;

如果 table1 的任何行在 table2 中,则返回 true

【问题讨论】:

  • 仅仅向我们展示DataTable table1 and DataTable table2 还不够好.. 请告诉我你有比这更多的代码..?请为你付出更多的努力..
  • Jon Skeet 有一个很棒的例子,假设你理解 Linq or Lambda's stackoverflow.com/questions/164144/…
  • 您打算如何确定两行是否相等?您是否有一列,如果匹配,则表示行相同?还是需要比较每一列的值来判断是否相等?
  • 两个表都有 ID 列。它应该迭代以检查一个 id 是否在另一个表中,它将比较一个表中的每一行与另一个表中的每一行。如果甚至有一场比赛,结果将是真实的。如果没有匹配,则结果为假。

标签: c# datatable


【解决方案1】:

您可以使用LINQ To DataSet 来实现:

bool matchFound =table1.AsEnumerable()
                        .Select(row1 => row1.Field<int>("ID"))
                    .Intersect(
                        table2.AsEnumerable()
                        .Select(row2 => row2.Field<int>("ID)))
                        .Any();

【讨论】:

  • 这应该行不通。它会将DataRow 的引用与另一个进行比较。
  • 不起作用。如何比较数据表中的特定行?所以两个数据表都有 Id 列
  • @akdurmus,如果两者都有 ID 列然后选择它。我已经修改了它现在应该可以工作的代码。
猜你喜欢
  • 1970-01-01
  • 2015-08-03
  • 2019-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-29
相关资源
最近更新 更多