Я использую запрос 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.
Предполагая, что CompletionRate = (PassedUsersNum / TotalUsersNum) * 100
, как я могу написать это, повторно используя вычисление PassedUsersNum, вместо того, чтобы снова писать это выражение?