我必須在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