私は現在このコードを持っています:
foreach (var newsToPolitician in news.NewsToPoliticians)
{
var politician = newsToPolitician.Politician;
var votes = (from s in db.Scores
where o.IDPolitician == politician.IDPolitician
&& o.IDNews == IDNews
group o by o.IDAtribute
into g
select new{
Atribute= g.Key,
TotalScore= g.Sum(x => x.Score)
}).ToList();
}
foreach
正常に動作しますが、データベースに対してループで複数のクエリを実行することは避けたいと思います。私のテーブルScores
は次のようになります。
IDScore | IDNews | IDUser | IDPolitician | IDAtribute | Score
1 40 1010 35 1 1
2 40 1010 35 2 -1
3 40 1002 35 1 1
4 40 1002 35 2 1
5 40 1002 40 1 -1
...
私の目標は、ニュースですべての政治家のすべてのスコアを集計することです。ニュースには最大7人の政治家がいる可能性があります。データベースをループ
で最大7回呼び出すのは費用がかかりますか?foreach
これはベストプラクティスではないことを知っているので、この特定のケースでそれを回避し、データベースを1回呼び出してから、サーバー側で処理する方法はありますか?