繁体   English   中英

vb.net LINQ选择与列表不同

[英]vb.net LINQ select Distinct to a List

我有一个datatable以具有一些重复值的列,我希望将这些值添加到listbox ,但没有重复

我尝试了以下

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

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

我相信每一行中都有更多唯一的列,这就是为什么不重复列未按预期返回结果的原因。 取而代之的是,您应该先选择列,然后再对它们应用不同的列。

所以试试这个:

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

希望这会有所帮助!

您可以将IEqualityComparer传递给不同的函数。 查看此答案与lambda的Distinct()吗?

我有同样的问题。 我发现在匿名类型上,它们的工作原理截然不同。 因此,我首先进行区分,然后复制到列表中。

    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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM