【发布时间】:2014-04-01 02:33:59
【问题描述】:
我必须将给定的 linq 查询转换为 lambda 表达式。即
var scholars = (from scholar in db.Scholars
join suspension in db.Suspensions
on scholar.ID equals suspension.ScholarID
where suspension.StartDate >= startDate &&
suspension.EndDate <= endDate
group scholar by new { scholar.ID, scholar.FirstName, scholar.LastName }
into g
select new
{
FullName = g.Key.FirstName +" " + g.Key.LastName,
TotalSuspensionSum = g.Sum(x => x.Suspensions.Sum(y => y.SuspensionDays))
})
.ToList()
.OrderBy(x=> x.FullName);
【问题讨论】:
-
那么您尝试了什么,出了什么问题?按两列以上分组与按两列分组完全相同。为什么您需要将查询转换为查询表达式形式?如果您的查询作为查询表达式更具可读性,为什么不保持这种方式呢?
-
你真的需要吗?如果您需要构建例如。
where动态地,您可以使用扩展方法执行此操作,然后像往常一样通过 LINQ 关键字应用其余的转换。我假设您的问题是由匿名分组类型引起的。您也可以随时创建自己的类型来保存键。