C# vb.net LINQ选择与列表不同
我有一个datatable,其中的一列有一些重复的值,我想将这些值添加到列表框中,但不要重复 我尝试了以下方法C# vb.net LINQ选择与列表不同,c#,.net,vb.net,linq,datatable,C#,.net,Vb.net,Linq,Datatable,我有一个datatable,其中的一列有一些重复的值,我想将这些值添加到列表框中,但不要重复 我尝试了以下方法 Dim a = From row In table.AsEnumerable.Distinct.ToList Select row.Field(Of String)("name") 但是它给了我重复的值,没有重复怎么办?我相信每行中还有更多的列是唯一的,这就是为什么distinct不能按预期返回结果的原因。相反,您应该首先选择列,然后对其应用distinct 因此,请尝试以下方法:
Dim a = From row In table.AsEnumerable.Distinct.ToList Select row.Field(Of String)("name")
但是它给了我重复的值,没有重复怎么办?我相信每行中还有更多的列是唯一的,这就是为什么distinct不能按预期返回结果的原因。相反,您应该首先选择列,然后对其应用distinct 因此,请尝试以下方法:
Dim a = (From row In table.AsEnumerable()
Select row.Field(Of String)("name")).Distinct().ToList()
希望这会有帮助 我相信每行中还有更多的列是唯一的,这就是为什么distinct不能按预期返回结果的原因。相反,您应该首先选择列,然后对其应用distinct 因此,请尝试以下方法:
Dim a = (From row In table.AsEnumerable()
Select row.Field(Of String)("name")).Distinct().ToList()
希望这会有帮助 您可以将IEqualityComparer传递给distinct函数。查看此答案您可以将IEqualityComparer传递给distinct函数。看看这个答案,我也有同样的问题。我发现在匿名类型上,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
我也有同样的问题。我发现在匿名类型上,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
为了进一步说明,他的原始查询不起作用的原因是因为它采用了不同的行-您的示例根据名称字段采用了distinct。为了进一步说明,他的原始查询不起作用的原因是因为它采用了不同的行-您的示例根据名称字段采用distinct。