vb.net - LINQ to DataTable,查找重复行

标签 vb.net linq 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})

我正在尝试使用 LINQ 来确定是否存在不止一种任何类型的产品。在 SQL 中,这将类似于:

SELECT Product FROM SOME_TABLE HAVING COUNT(*) > 1

我一辈子都弄不明白如何在 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

但是当我尝试实际使用“q”时出现错误。关于如何使这项工作有任何想法吗?

最佳答案

试试这个

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

关于vb.net - LINQ to DataTable,查找重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6584119/

相关文章:

C# Linq - 多列匹配的组?

c# - 当 sum 中的表达式是字符串时,如何在 linq 中分组和求和?

javascript - Angular : Cannot read property 'on' of undefined

javascript - 从 javascript 发送 DataTables 中的 JSON 对象

c# - 将 C# 语句体 lambda 转换为 VB

VB.NET 如何提供最佳性能 "Select case"或 IF... ELSEIF ... ELSE... END IF

asp.net - OneDrive 静默身份验证

vb.net - 在 vb 中声明字符串和条件

c# - 根据子元素对堆栈面板进行排序?

c# - DataTable RowChanged 如何获取上一行的值?