使用 LINQ 选择最常见的值
Posted
技术标签:
【中文标题】使用 LINQ 选择最常见的值【英文标题】:Select most frequent value using LINQ 【发布时间】:2011-10-07 12:59:35 【问题描述】:我正在尝试选择表中最常见的五个值并将它们返回到一个列表中。
var mostFollowedQuestions = (from q in context.UserIsFollowingQuestion
select *top five occuring values from q.QuestionId*).toList();
有什么想法吗?
谢谢
【问题讨论】:
【参考方案1】:var mostFollowedQuestions = context.UserIsFollowingQuestion
.GroupBy(q => q.QuestionId)
.OrderByDescending(gp => gp.Count())
.Take(5)
.Select(g => g.Key).ToList();
【讨论】:
@wardh 我想你会发现这实际上给了你最少经常出现的值。我的回答略有不同,但会根据要求给出最频繁发生的情况。 已编辑以提供最频繁的 - 将 Orderby 更改为 OrderbyDescending【参考方案2】: int[] nums = new[] 1, 1, 1, 2, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7 ;
IEnumerable<int> top5 = nums
.GroupBy(i => i)
.OrderByDescending(g => g.Count())
.Take(5)
.Select(g => g.Key);
【讨论】:
以上是关于使用 LINQ 选择最常见的值的主要内容,如果未能解决你的问题,请参考以下文章
使用 linq 在一个 SQL 查询 (EF6) 中为多个数据库列选择可能的值