2012-02-29 10 views
2

私が持っているに投票GROUPBYは、その後、C#でグループに基づいて別のリストを注文

class Vote 
{ 
    int ItemId; 
    ... more properties, but not relevant ... 
} 

だから、投票ポイントを保持している。この

class Item 
{ 
    int ItemId; 
    string Name; 
    DateTime CreatedDate; 
    ... more properties, but not relevant ... 
} 

のように気にいらに見えるオブジェクトの一つListと別項目。私は今、私は良いリストに最も多くの票を私にアイテムIDのリストを与えるを持っているデータベースからすべての票を集め、そしてリスト

var votes = GetAllVotes().ToLookup(v => v.ItemId).OrderByDescending(v => v.Count()); 

にそれらを保存してきました。投票リストに基づいてアイテムのリストを並べ替える方法はありますか?

var items = GetAllItems().OrderBy(i => i.CreatedDate); 
//then I want to do something like this: 
items.OrderBy(votes.Select(v => v.Key, v.Count()) 

ので、ここでの目標は、アイテムは投票数によってソートされ、0票持つすべての項目は、日付によって彼らの並べ替えを維持されることをです。

答えて

3

あなたが何かしたいように聞こえる:

from item in GetAllItems() 
join vote in GetAllVotes() on item.ItemId equals vote.VoteId into votes 
orderby votes.Count() descending, item.CreatedDate 
select new { Item = item, Votes = votes.Count() }; 

(あなたがしたい場合、私は非クエリ式の表記でそれを置くことができますが、それはニートではありません。)

+0

はい。それはまさに私が望んでいたものですが、私はあなたがすでにそれを知っていましたか?あなたはたぶん質問をする前に、メモ帳に記入しておいたほうがいいでしょう。 – peirix

関連する問題