我正在寻找的结果最有效的途径是什么?我正在使用ASP.NET 4.5和C#。
假设我有以下int
列表:
5,7,2,7,8,5,8,0,2,9,8,8,7
我想从列表中删除重复项,并按每个项目的出现次数排序。我知道我可以使用LINQ的Distinct()
来使项目独一无二,但是我怎样才能按出场次数进行排序?这是上述示例的理想结果:
8,7,5,2,0,9
答案 0 :(得分:4)
您可以对项目进行分组,然后按每组中的计数对其进行排序:
var items = new[] { 5, 7, 2, 7, 8, 5, 8, 0, 2, 9, 8, 8, 7 };
var result = items
.GroupBy(x => x)
.OrderByDescending(x => x.Count())
.Select(x => x.Key);
答案 1 :(得分:1)
var ordered = list
.GroupBy(x => x)
.OrderByDescending(g => g.Count())
.Select(g => g.Key);