0
私はアンケートへの回答の表を持っています(アセスメント)いくつかのアセスメントを提出することができますが、私はただ一つのエリアにつき最新のアセスメントの回答のみを求めます。いくつかのフィールドでグループ化し、最新の日付を選択しますか?
以下は私のデータであり、*の付いたレコードは私が望むものでしょう。ここリターン
AsessmentID AssessmentDate Status AreaID Response Category
1 01/01/2016 Complete 1 1 A
1 01/01/2016 Complete 1 2 B
1 01/01/2016 Complete 1 4 C
2 05/01/2016 Complete 1 5* A
2 05/01/2016 Complete 1 4* B
2 05/01/2016 Complete 1 5* C
3 02/01/2016 Complete 2 1* A
3 02/01/2016 Complete 2 2* B
3 02/01/2016 Complete 2 4* C
4 03/01/2016 Complete 3 5* A
4 03/01/2016 Complete 3 4* B
4 03/01/2016 Complete 3 5* C
5 04/01/2016 Draft 3 3 A
5 04/01/2016 Draft 3 2 B
5 04/01/2016 Draft 3 3 C
は、これまでのところ、私のLINQのですが、それだけのことができます。2つの応答
from c in db.Answers.Where(b => b.Status == Status.Complete)
group c by new { c.AreaID, c.AssessmentID, c.AssessmentDate} into grp
select grp.OrderByDescending(c => c.AssessmentDate).FirstOrDefault();
華麗で唯一の問題は、それぞれの応答にも「カテゴリ」というプロパティがあり、各エリアの平均カテゴリ値が必要だということに言及しなかったことです。 – totalitarian
平均を計算する方法を定義する必要があると思いますA、B、C ..値が最初に表示されます。それから、あなたが望むものを見つけ出すのはとても難しいことではありません。 :) –
カウント(カテゴリ)/合計(カテゴリ) – totalitarian