0

我有 2 个具有相同结构的数据表和一些具有重复键的行。所以我想使用 lambda 表达式来获取表 1 中的所有记录,这些记录的键与表 2 中的任何行的键重复。我尝试使用这个:假设item1anditem2是键

Dim result as IEnumerable(Of DataRow) = table1.Asenumerable.Where(function(t1) _
table2.AsEnumerable().Any(function(t2) t1("item1") = t2("item1") _
andalso t1("item2") = t2("item2")))

但是这个代码片段总是给我没有结果(result.count = 0),尽管事实上两个表之间有重复

P/S:对不起我的英语不好

4

1 回答 1

1

我会尝试以下:

' prepare HashSet from keys from table2 '
Dim table2Keys = new HashSet(Of Tuple(Of String, String))
set.UnionWith(table2.AsEnumerable().Select(Function(x) Tuple.Create(x("item1"), x("item2"))

' search table1 for duplicates '
Dim result = table1.Where(Function(x) table2Keys.Contains(Tuple.Create(x("item1", y("item2")))

它应该比使用 具有更好的性能Any,因为HashSet可以在O(1)中完成查找。

于 2013-08-20T05:28:43.177 回答