2

私はそれをしたいことをするこの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);
4

1 に答える 1

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);
于 2013-05-03T16:10:21.680 に答える