【发布时间】:2018-01-19 08:02:52
【问题描述】:
我坚持从 2 个条件是动态的数据表中查找重复项。
假设 TABLEA 和 TABLEB 具有相同的架构
和比较列可以是任何东西。 列可能不止一个。
如何构建动态条件以从 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 => x.GetType().GetProperty(myColumnName).GetValue(x) != <Something> ); -
但是如果列不存在会抛出异常。
-
令人惊讶,我意识到,但您不是 Stack Overflow 历史上第一个想要在仅在运行时知道的列上加入两个表的人。一些示例请参见标记的重复项,包括表达式的使用,甚至是提供的库(动态 LINQ)。