Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# vb.net LINQ选择与列表不同_C#_.net_Vb.net_Linq_Datatable - Fatal编程技术网

C# vb.net LINQ选择与列表不同

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 因此,请尝试以下方法:

我有一个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()
        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。