2009-04-16 2 views
39

私は以下のlinqクエリを持っています。これはうまくいきます。私はどのように私はgroup'd結果を注文するか分からない。Linqでグループ結果を注文するにはどうすればいいですか?

from a in Audits 
join u in Users on a.UserId equals u.UserId 
group a by a.UserId into g 
select new { UserId = g.Key, Score = g.Sum(x => x.Score) } 

結果は現在、ユーザーIDの昇順で並べられています。私はスコアが下降した後です。

感謝:)

答えて

64

だけORDERBY句を追加します;-)

from a in Audits 
join u in Users on a.UserId equals u.UserId 
group a by a.UserId into g 
let score = g.Sum(x => x.Score) 
orderby score descending 
select new { UserId = g.Key, Score = score }; 
+0

私はorderbyを追加しようとしましたが、動作しませんでした。しかし、あなたがしたことはそこにLETステートメントを追加することでした!ああ...興味深いです... –

+0

私は確認しませんでしたが、私はLETが必要だとは思わない。 "orderby g.Sum(x => x.Score)"で十分でしょうか? –

+0

があるかもしれませんが、g.Sumもselectにリストされていなければなりません。 –

13
var results = 
(from a in Audits 
join u in Users on a.UserId equals u.UserId 
group a by a.UserId into g 
select new { UserId = g.Key, Score = g.Sum(x => x.Score) }) 
.OrderByDescending(p=>p.Score); 

トップ1よりも簡単に、これはあなたの問題を解決することを願っています、;)

乾杯

+1

+1。この回答が掲載されてから3年以上経った今、私は今日それを助けました! – utsikko

関連する問題