基本的に日付フィールドと「スコア」フィールド(「幸せ」、「中立」、「悲しい」のいずれか)を含むフィードバックスコアの表があります。
次のように、月ごとの各スコアのカウントを取得するクエリを返したいとします。
ただし、クエリが正しくグループ化されていません。基本的には、毎月 3 つの行を取得しています (次のように、「幸せ」に 1 行、「中立」に 1 行、「悲しい」に 1 行)。
データをまとめて集計するにはどうすればよいですか?
現時点での私のクエリは次のとおりです。
var monthlyScore = from f in db.tl_feedbacks
group f by new { month = f.timestamp.Month, year = f.timestamp.Year, score = f.tl_feedback_score.score } into g
select new
{
dt = string.Format("{0}/{1}", g.Key.month, g.Key.year),
happyCount = g.Where(x => x.tl_feedback_score.score == "happy").Count(),
neutralCount = g.Where(x => x.tl_feedback_score.score == "neutral").Count(),
sadCount = g.Where(x => x.tl_feedback_score.score == "sad").Count(),
total = g.Count()
};