2011-07-18 13 views
12

私はテーブルの上位5つの最も頻繁な値を選択してリストに戻そうとしています。LINQを使用して最も頻繁に値を選択

var mostFollowedQuestions = (from q in context.UserIsFollowingQuestion 
           select *top five occuring values from q.QuestionId*).toList(); 

おかげ

答えて

29
 var mostFollowedQuestions = context.UserIsFollowingQuestion 
            .GroupBy(q => q.QuestionId) 
            .OrderByDescending(gp => gp.Count()) 
            .Take(5) 
            .Select(g => g.Key).ToList(); 
+1

ありがとう。うまく動作します – wardh

+1

@wardh私はあなたが実際にあなたに*少なくとも*頻繁に発生する値を与えることがわかると思います。私の答えは微妙に異なりますが、最も頻繁に発生するのは要求通りです。 –

+0

OrderbyをOrderbyDescendingに最も頻繁に変更するように編集しました – saj

22
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); 
+0

感謝。魅力のように動作します! – wardh

関連する問題