【问题标题】:subtract two DataTables that have the same shema, E.g Minus SQL query减去两个具有相同 shema 的 DataTable,例如减去 SQL 查询
【发布时间】:2016-06-16 16:43:12
【问题描述】:

我有两个具有相同架构(相同列名和类型)的数据表。我想获取出现在第一个而不是第二个的行。 有人可以帮我吗?谢谢。

【问题讨论】:

  • 你可以使用 Linq 的 except。您可能必须提供自己的 EqualityComparer。
  • @WilliamXifaras 您提到的问题中的答案不起作用:它返回两个数据表中的行。

标签: c# .net datatable


【解决方案1】:

值得庆幸的是,MS 创建了extension methods for DataTable,让您可以使用Linq 方法(如Except)来查询数据行,并编写了一个class that implements IEqualityComparer<DataRow>,通过它们的列值比较DataRow 实例:

var rows = dt1.AsEnumerable()
              .Except(dt2.AsEnumerable(),DataRowComparer.Default);

【讨论】:

    【解决方案2】:

    我会这样写:

    var onlyIn1 = dataTable1.Where( row1 => !dataTable2.Rows.Any( row2 => row1["CustomerKey"] == row2["CustomerKey"]) ).ToList();
    

    【讨论】:

      【解决方案3】:

      你可以试试这个:

      var onlyIn1 = db.Table1.Except(db.Table2).ToList();
      

      我从不测试这个,但它应该像 T-SQL 的 EXCEPT 一样工作

      【讨论】:

      • 虚张声势,bla bla bla...请认真回答!
      猜你喜欢
      • 2013-01-02
      • 1970-01-01
      • 1970-01-01
      • 2019-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多