按 C# 中每个元素的计数对整数列表进行排序
本文关键字:整数 列表 排序 元素 | 更新日期: 2023-09-27 18:32:01
我想按整数在列表中出现的次数对整数列表的元素进行排序。
因此,结果列表的第一个元素应该是原始列表中最常见的元素,第二个元素是第二个最常见的元素,依此类推。每个整数只应在结果列表中包含一次,而不是原始列表包含它的次数。次要顺序并不重要。
例如,对于1,2,3,2,1,6,2
,我想得到2,1,3,6
(2
出现三次,1
出现两次,3
和6
都只出现一次)。
你可以做:
- 按每个项目分组
- 根据组计数降序排序
- 根据组键选择唯一项
喜欢:
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
使用 GroupBy
和 OrderBy
:
var list = new[] { 1, 2, 3, 2, 1, 6, 2 };
list.GroupBy(x => x).OrderBy(x => x.Count()).Select(x => x.Key);