使用 Linq 按名称频率对列表进行排序

时间:2021-02-24 07:17:40

标签: c# linq group-by sql-order-by

原列表为:

Cat
Dog
Mouse
Cat
Bat
Alpaca
Bat

预期结果:

Bat
Bat
Cat
Cat
Alpaca
Dog
Mouse

结果首先显示名称出现的频率,然后按字母顺序排序。 谁能帮我用 C# 和 LINQ 解决这个问题?

1 个答案:

答案 0 :(得分:2)

您可以使用 group by 来执行此操作:

var input = new List<string> { "Cat", "Dog", "Mouse", "Cat", "Bat", "Alpaca", "Bat" };
var result = input.GroupBy(x => x).OrderByDescending(x => x.Count()).ThenBy(x => x.Key).SelectMany(x => x).ToList();

在线演示:https://dotnetfiddle.net/10wAPu