c# - LINQ 中的 GroupBy 和 OrderBy

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

我有这个 SQL 查询可以执行我想要的操作,但我对 GroupBy()OrderBy() 的工作原理感到困惑...

这是我运行良好的 SQL 语句:

SELECT TOP 5 UserID, COUNT(*) 
    FROM SkillLevelMap
    WHERE SkillID = 183 OR SkillID = 102 OR SKILLID = 103 
    GROUP BY UserID
    ORDER BY COUNT(*) DESC

理想的最终产品是满足这些条件的 UserID 列表,按每个 SkillID 的出现次数排序,其中具有最多 SkillID 匹配的用户位于顶部,向下到具有较少 SkillID 的用户。

我尝试过但没有成功:

var userList2 = SQEPData.AllSkillLevelMaps.Where(x => skillIDs.Contains(x.SkillID)).GroupBy(g => g.User);

最佳答案

您的查询类似于:

var userList2 = SQEPData.AllSkillLevelMaps
                   .Where(x => skillIDs.Contains(x.SkillID))
                   .GroupBy(x => x.User)
                   .Select(g => new { User = g.Key, Count = g.Count() })
                   .OrderByDescending(i => i.Count)
                   .Take(5);

关于c# - LINQ 中的 GroupBy 和 OrderBy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16363250/

相关文章:

mysql - SQL 查询性能

MySQL - 按连续 block 分组

c# - 如何将 List<KeyValuePair<int,int>> 转换为 int[][]?

c# - 首先通过将类型作为参数传递来动态实例化 Entity Framework 数据库中的模型对象

mysql - SQL:使用where来搜索带有参数的当前查询

c# - 使用 Entity Framework LINQ 有效检查数据库中是否存在记录

c# - 如何使这些 foreach 循环高效?

c# - WPF是否有鼠标滚轮上下滚动事件

c# - 如何使用 C# 创建自签名证书?

c# - 来自 Ajax 帖子的 JSON 到 MVC 对象