【问题标题】:Sort an list by frequency of names by using Linq使用 Linq 按名称频率对列表进行排序
【发布时间】:2021-05-26 12:01:32
【问题描述】:

原名单为:

Cat
Dog
Mouse
Cat
Bat
Alpaca
Bat

预期结果:

Bat
Bat
Cat
Cat
Alpaca
Dog
Mouse

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

【问题讨论】:

  • 为什么“羊驼”跟在“猫”后面?这是笔误吗?
  • 我想先按频率对名称进行排序
  • 您是否查看过orderby 的任何一种形式。您还需要指定排序规则;我想不出一个能把 Alpaca 放在你展示它的地方
  • 使用OrderByDescending
  • 如果有人知道一些 LINQ 魔法,它在列表中执行 order by 频率和按 alpha 排序,我会感到惊讶。您需要在问题中指定类似的基本内容。您可以对其进行编辑以添加该信息。您应该通过tour 阅读有关如何提出好问题的信息

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


【解决方案1】:

您可以使用 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

【讨论】:

  • 如何让出现频率更高的名字排在最前面?
猜你喜欢
  • 2021-01-20
  • 1970-01-01
  • 1970-01-01
  • 2014-06-19
  • 2021-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-13
相关资源
最近更新 更多