2017-01-28 21 views
0

私はLinqでこのSQLを実行したいだけです。しかしどうですか?Linqグループby合計で

Select Id, sum(Count) 
from dbo.BThread 
group by Id 
order by sum(Count) desc 

私はこれを試して失敗しました。その結果、1行しか得られません。私はこれよりも多くの行を期待しています。数え上げるのに多くのidsが必要です。

var List = (from tbBThread in context.BThread.Take(10) 
       group tbBThread by tbBThread.Id into bTmp 
       orderby bTmp.Sum(x => x.Count) 
       select new BViewModel 
       { 
        Id = bTmp.Key, 
        Id = bTmp.First().Id, 
        Count = bTmp.Sum(x => x.Count) 
       }).ToList(); 
+0

2番目の 'Id = bTmp.First()。Id 'を削除してください – Slai

+0

問題点を説明してください。 – SeduceAdmin

+0

何が失敗したのかについてのヒントがなくても失敗すると言います(ヒント:質問に詳細を追加します)が、選択肢に2つのIdを持つことはできません。なぜなら、問題は何か分かりません。 – Slai

答えて

0

Take(10)は、クエリの最後にある必要があります。

var List = (from tbBThread in context.BThread 
      group tbBThread by tbBThread.Id into bTmp 
      orderby bTmp.Sum(x => x.Count) 
      select new BViewModel 
      { 
       Id = bTmp.Key, 
       Count = bTmp.Sum(x => x.Count) 
      }).Take(10).ToList(); 

そうしないと、あなたは、同じIdを持っているので、同じグループに入るように見えるあなたのcontext.BThreadの最初の10個の要素を見てください。

(Slaiはすでにコメントに記載されています)、2番目のId = bTmp.First().Id,を削除します。

+0

ありがとう。今私は解決策を得た.. – SeduceAdmin

関連する問題