【发布时间】:2011-09-13 23:39:24
【问题描述】:
我正在使用一个 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的计算来编写它,而不是再次编写那个表达式?
【问题讨论】:
标签: c# linq object-initializers