LINQ中的GroupBy和OrderBy

时间:2013-05-03 16:08:03

标签: 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的用户位于顶部,下往较少的人。

我试图无效:

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

1 个答案:

答案 0 :(得分:2)

您的查询似乎与以下内容类似:

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);