我有一个列表(例如List<int>
:1,2,3,2,1,6,2)。其中一些元素是相同的,有些不是(即有不同的元素)。
我需要按列表中每个元素出现的次数来排序列表。有可能吗?
答案 0 :(得分:2)
你可以这样做:
像:
List<int> list = new List<int> { 1, 2, 3, 2, 1, 6, 2 };
var query = list.GroupBy(item => item)
.OrderByDescending(grp => grp.Count())
.Select(grp => grp.Key);
foreach (var item in query)
{
Console.WriteLine(item);
}
编辑:
如果您不想要独特的商品,但根据其出现的所有商品,请使用:
var query = list.GroupBy(item => item)
.OrderByDescending(grp => grp.Count())
.SelectMany(grp => grp);
SelectMany
会压缩列表,并为您提供如下输出:
2
2
2
1
1
3
6
答案 1 :(得分:1)
使用GroupBy
和OrderBy
:
var list = new[] { 1, 2, 3, 2, 1, 6, 2 };
list.GroupBy(x => x).OrderBy(x => x.Count()).Select(x => x.Key);