【问题标题】:Finding duplicates among two datatables [duplicate]在两个数据表中查找重复项 [重复]
【发布时间】:2018-01-19 08:02:52
【问题描述】:

我坚持从 2 个条件是动态的数据表中查找重复项。

假设 TABLEATABLEB 具有相同的架构

和比较列可以是任何东西。 列可能不止一个。

如何构建动态条件以从 TABLEA 中删除重复项。

我在这里尝试了这个查询

例如我的列名用逗号分隔

动态列A、动态列B、动态列C

     var matched = from table1 in dt1.AsEnumerable()
           join table2 in dt2.AsEnumerable() on 
         table1.Field<object>(dynamiccolumn) equals table2.Field<object>(dynamiccolumn)
         where table1.Field<object>(dynamiccolumn) != table2.Field<object>(dynamiccolumn)
         select table1;

" where table1.Field(dynamiccolumn) != table2.Field(dynamiccolumn)" 此语句可能用于多个列。

谁能给我一些关于这个的指针。

提前致谢

【问题讨论】:

  • 没有任何测试,我很确定你可以用 Reflexion 做到这一点:.Where(x =&gt; x.GetType().GetProperty(myColumnName).GetValue(x) != &lt;Something&gt; );
  • 但是如果列不存在会抛出异常。
  • 令人惊讶,我意识到,但您不是 Stack Overflow 历史上第一个想要在仅在运行时知道的列上加入两个表的人。一些示例请参见标记的重复项,包括表达式的使用,甚至是提供的库(动态 LINQ)。

标签: c# c#-4.0 datatable


【解决方案1】:

查看您的问题,您需要一个无需重新编译源代码即可自定义的查询。我建议你使用表达式树。它们很难理解并且会带来复杂性,但它物有所值。

看看这篇文章 Microsoft Article on Expression Trees

【讨论】:

    猜你喜欢
    • 2016-02-27
    • 1970-01-01
    • 2020-03-09
    • 2013-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-09
    相关资源
    最近更新 更多