1

我有一个datatable包含一些重复值的列,我想将这些值添加到 alistbox但没有重复

我尝试了以下

Dim a = From row In table.AsEnumerable.Distinct.ToList Select row.Field(Of String)("name")

但它给了我重复的值,没有重复怎么办?

4

3 回答 3

8

我相信每一行都有更多的列是唯一的,这就是为什么 distinct 没有按预期返回结果的原因。相反,您应该首先选择列而不是对其应用不同的列。

所以试试这个:

Dim a = (From row In table.AsEnumerable()
        Select row.Field(Of String)("name")).Distinct().ToList()

希望这会有所帮助!

于 2012-11-25T05:33:40.680 回答
1

您可以将 IEqualityComparer 传递给 distinct 函数。看到这个答案Distinct() with lambda?

于 2012-11-25T05:35:53.603 回答
0

我有同样的问题。我发现在匿名类型上不同的作品。所以我先做不同的然后复制到一个列表中。

    Dim  _ret = New List(Of Marcas)()
    For Each m In lista.Select(Function(s) New With {Key .id = s.BrandNo, .nombre = s.BrandName}).Distinct()
        _ret.Add(New Marcas With {.id = m.id, .nombre = m.nombre})
    Next
于 2014-02-28T11:05:11.877 回答