我有这个 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/