LINQ to DataTable,找到重复的行

Dan*_*gne 2 linq vb.net datatable

使用以下DataTable:

    Dim d As New DataTable()
    d.Columns.Add("Product", GetType(System.String))
    d.Columns.Add("Value", GetType(System.Double))

    d.Rows.Add(New Object() {"OAP1", 100.0})
    d.Rows.Add(New Object() {"EPP4", 100})
    d.Rows.Add(New Object() {"OAP1", 150.25})
    d.Rows.Add(New Object() {"OAPIN", 200.0})
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用LINQ来识别是否存在多种类型的产品.在SQL中,这将工作如下:

SELECT Product FROM SOME_TABLE HAVING COUNT(*) > 1
Run Code Online (Sandbox Code Playgroud)

我不能为我的生活弄明白如何在LINQ中做到这一点.我跟随的人做了这样的事:

    Dim q = From row In d.AsEnumerable()
            Group row By New { column1 = row("Product"), column2 = row("Value") }
            Into grp
            Where grp.Count() > 1
            Select row

    For Each item In q
        ' 'q' is not declared. It may be inaccessible due to its protection level.
    Next
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用'q'时,我收到错误.关于如何使这项工作的任何想法?

And*_*ock 6

试试这个

Dim duplicates = d.AsEnumerable().GroupBy(Function(i) i.Field(Of String)("Product")).Where(Function(g) g.Count() > 1).Select(Function(g) g.Key)

For Each dup In duplicates
Next
Run Code Online (Sandbox Code Playgroud)