返回按重复/重复项目计数排序的唯一列表

本文关键字:排序 唯一 列表 项目 返回 | 更新日期: 2023-09-27 17:57:03

获得我正在寻找的结果的最有效途径是什么?我使用的是 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

返回按重复/重复项目计数排序的唯一列表

您可以对项目进行分组,然后按每个组中的计数对它们进行排序:

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);
var ordered = list
    .GroupBy(x => x)
    .OrderByDescending(g => g.Count())
    .Select(g => g.Key);