使用linq vb.net从数据表中检索不同的值

Joh*_*sen 1 linq vb.net datatable

我正在尝试从数据表中的特定列检索所有不同的值。数据表中的列名称为“计数”。我有2240行,“计数”列中有6个不同的值。问题是,当我执行以下代码时,它给了我行数而不是6个不同的值。

Dim counts = (From row In loadedData
Select row.Item("Count")).Distinct()
For Each i In counts
    MsgBox(i)
Next
Run Code Online (Sandbox Code Playgroud)

如何修改此值以检索6个不同的值,而不是给我总的行数?

Chi*_*aka 6

您可以使用 ToTable(distinct As Boolean, ParamArray columnNames As String()) 方法来实现此目的。

loadedData.DefaultView.ToTable(True, "Count")
Run Code Online (Sandbox Code Playgroud)

这将为您返回不同的用户。如果需要,您可以添加多个列名称。

这是msdn文档。 https://msdn.microsoft.com/en-us/library/wec2b2e6(v=vs.110).aspx

  • 请编辑更多信息。仅代码和“尝试这个”答案是[不鼓励](http://meta.stackexchange.com/questions/196187/is-try-this-bad-practice),因为它们不包含可搜索的内容,并且不包含解释为什么有人应该“尝试这个”。 (2认同)

Tim*_*ter 5

您只需要选择该列并使用Enumerable.Distinct

Dim distinctCounts As IEnumerable(Of Int32) = loadedData.AsEnumerable().
    Select(Function(row) row.Field(Of Int32)("Count")).
    Distinct()
Run Code Online (Sandbox Code Playgroud)

在查询语法中(我什至不知道DistinctVB.NET 甚至直接支持该语法):

distinctCounts = From row In loadedData
                 Select row.Field(Of Int32)("Count")
                 Distinct
Run Code Online (Sandbox Code Playgroud)