質問
私は、多くの子供たちにゼロを持つテーブルを持っています。ちょうどこのサイトは、多くのQUESTION
(アップ== 1またはダウン== 0のいずれか)にゼロを持つことができVOTES
を持っているかのような。
私が最も最高得票のを持っているすべての質問にを取得する必要があります。例えば。合計(投票)降順で並べられた質問、。
私は、LINQでそれを行う方法がわからないんだけど。
だから私は、質問のEntitySetと呼ばれているだろうし、別のEntitySetは、投票と呼ばれます。
私は、グループを行うとしましょうしようとしていたとORDER BYと何もコンパイルされます(
誰もが何か提案を持ってもらえ、してください?
解決
myDataContext.Questions
.OrderByDescending(q => q.Votes.Select(v => v.VoteValue).Sum())
クエリの理解で(チェックしない):
from q in myDataContext.Questions
order q by
(
from v in q.Votes
select v.VoteValue
).Sum() descending
select q;
他のヒント
それは主にあなたのデータに依存するが、ここに小さなサンプルです。
XElement xdoc=XElement.Parse(@"
<root>
<question name=""A"">
<vote type=""up"" />
<vote type=""down"" />
</question>
<question name=""B"">
<vote type=""up"" />
<vote type=""up"" />
</question>
<question name=""C"" />
</root>
");
var result=
from q in xdoc.Elements("question")
let votes=q.Elements("vote").Count(v=>v.Attribute("type").Value=="up")
orderby votes descending
select new
{
Name=q.Attribute("name").Value,
Votes=votes
};
foreach (var r in result)
{
Console.WriteLine(r.Name+" "+r.Votes);
}
あなたがのEntitySetを使用しているので、
私はそれがLinq2SQLで集まりますか?あなたが適切に設定参照を持っているとVote.Questionプロパティを持っていると仮定します:
(from v in dc.Votes
where v.IsUpVote // v.Vote == 1 (??)
group v by v.Question into q
select new { Question = q.Key, UpVotes = q.Count() }).OrderByDescending(e => e.UpVotes);
私はあなたが欲しいものを実際にある)(カウントここに集まりますか!合計()と同じを生産、おそらくとして意味のあるではないでしょう(?)
所属していません StackOverflow