使用linq vb.net在不同表中的行中查找重复值

时间:2013-11-13 11:02:27

标签: vb.net linq

所以我有2个这样的DataTable:

table1:    |mean1|mean2|   table2: |mean1|mean2|
           -------------           -------------
           |1.2  | 1.3 |           |2.2  | 1.3 |
           |2.0  | 2.0 | <=======> |2.0  | 2.0 |
           |1.0  | 2.3 |           |3.0  | 1.0 | 
           |1.4  | 2.7 |           |3.0  | 1.2 |
           |1.5  | 2.8 |           |2.7  | 1.3 |
           |2.2  | 1.1 | <=======> |2.2  | 1.1 |

我的目标是从table2中找到包含在table1中的值。它必须用 VB.Net

编写

在table1中查找重复项的代码只有:

Dim dupes = From row In table1.AsEnumerable()
            Group row By G = New With {.mean1= row.Field(Of Double)("mean1")}.mean1,
            New With {.mean2= row.Field(Of Double)("mean2")}.mean2 Into DupMean = Group
            Where DupMean.Count() > 1
            Select DupMean

如何将代码与table2结合使用?

1 个答案:

答案 0 :(得分:1)

像这样的东西

Dim dupes = From row In table1.AsEnumerable()
            Join row2 In table2.AsEnumerable()
            On row("mean1") Equals row2("mean1") And row("mean2") Equals row2("mean2")
            Select New With {.RowInT1 = row, .RowEqualInT2 = row2}

或者,包括每个表的内部副本:

Dim dupes = From row In table1.AsEnumerable().Concat(table1.AsEnumerable()()
            Group row By G = New With {.mean1 = row("mean1"), .mean2 = row("mean2")}
            Into DupMean = Group
            Where DupMean.Count() > 1
            Select DupMean