我刚看到This Question,我对接受的答案感到有点困惑
List<String> list = new List<String>{"6","1","2","2","4","6","5","1","6","6","2"};
list = list.Distinct().ToList();
list.Distict().ToList()
也会根据发生的次数进行排序吗?如果它是一个复杂的列表那么我的意思是什么?
答案 0 :(得分:5)
list.Distict()也是如此.ToList()也根据数量排序 出现?
不,它没有。它只是通过使用默认的相等比较器来比较值,从列表中返回不同的元素。
Enumerable.Distinct<TSource> Method (IEnumerable<TSource>
)
Distinct(IEnumerable)方法返回一个 无序序列,不包含重复值。它使用了 default equality comparer,Default,比较值。
答案 1 :(得分:2)
list.Distict()也是如此.ToList()也根据出现次数排序?
不,它没有。允许Distinct()
以任何有用的方式对序列重新排序。
我是说什么标准,如果它是一个复杂的列表然后是什么?
如果您需要按任何特定顺序排序的列表,您可以自行强制它。如果您想保留原始订单,可以使用更复杂的查询来执行此操作:
var unique = list
.Select((v,i) => new {v, i})
.GroupBy(p => p.v)
.OrderBy(g => g.Min(p => p.i))
.Select(g => g.Key)
.ToList();
如果您想根据出现次数进行订购,请使用此查询:
var unique = list
.GroupBy(p => p)
.OrderBy(g => g.Count()) // Items with smaller count are first
.Select(g => g.Key)
.ToList();