我必须在lambda表达式中转换给定的linq查询。即Group通过使用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关键字应用其余的转换。我假设你的问题是由匿名分组类型造成的。您也可以始终创建自己的类型来保存密钥。 – Luaan