私は次のような(いくつかの単純化した後)ように見えるlinqクエリを使用しています:
List<UserExams> listUserExams = GetUserExams();
var examData =
from userExam in listUserExams
group by userExam.ExamID into groupExams
select new ExamData()
{
ExamID = groupExams.Key,
AverageGrade = groupExams.Average(e => e.Grade),
PassedUsersNum = groupExams.Count(e => /* Some long and complicated calculation */),
CompletionRate = 100 * groupExams.Count(e => /* The same long and complicated calculation */) / TotalUsersNum
};
気になるのは、PassedUsersNum と CompletionRate の計算式が 2 回出てくることです。
と仮定するとCompletionRate = (PassedUsersNum / TotalUsersNum) * 100
、その式を再度記述する代わりに、PassedUsersNum の計算を再利用してどのように記述できますか?