当我在下图中应用DISTINCT.ToList()
时,将从结果列表中删除哪些项目? 是否将第一个条目(即第一个添加到列表中)重复保存在要返回的新列表中?如果没有,是否有办法让DISTINCT.ToList()
保留新列表中的重复项中的第一个条目被返回?在使用List.Distinct()时返回项目在结果列表中的顺序
Dim values As List(Of Integer) = New List(Of Integer)
values.Add(1)
values.Add(5)
values.Add(2)
values.Add(3)
values.Add(2)
values.Add(3)
values.Add(4)
values.Add(2)
values.Add(2)
values.Add(3)
values.Add(3)
values.Add(3)
Dim items As List(Of Integer) = values.Distinct().ToList
' Display result.
For Each i As Integer In items
Console.WriteLine(i)
Next
Expected output:
1
5
2
3
4
这MSDN页面上显示 “鲜明(中TSource)(IEnumerable的(中TSource))方法返回一个不包含重复值无序序列”。有没有办法解决这个问题?
实际上,没有项目将从列表中删除,包含不同项目的新列表将被返回。 – hellowstone
您可以随时添加一个扩展方法,你自己,做为了它:'公共静态IOrderedEnumerable OrderedDistinct(这IEnumerable的数据){返回data.Distinct()排序依据(X => X)。 }' –
Maarten
用'Distinct'操作返回的列表仅包含第一个发生的原始项目,并且没有排序。所以你必须期望在你的例子中你的预期输出。 – hellowstone