0
我有一個MockDataStore
,它返回List<Task>
。然後我將使用Aggregate
擴展方法來查詢該列表。所以我在做一個LINQ到對象的查詢,這個工作很好地安靜。現在我已經用繼承DbContext
類的類替換了我的模擬數據存儲,現在同樣的查詢不再工作了,因爲我無法使用具有正文的lambda表達式,因爲它無法轉換爲表達式樹。那麼是否有辦法繞過它,仍然在SQL中完成聚合,並避免在內存中執行聚合?下面是我的代碼:對DbContext使用Aggregate擴展方法的查詢
//List<Task> tasks = MockDataStore.GetData()
// .Aggregate(new List<Task>(), (accumulator, treaty) => { accumulator.AddRange(treaty.Tasks); return accumulator; })
// .Where(x => x.AssignedTo.Equals(companyId) && x.StatusId == statusId).ToList();
using (SCGREDbContext context = new SCGREDbContext())
{
List<Task> tasks = context.Treaties.Aggregate(new List<Task>(), (accumulator, treaty) => { accumulator.AddRange(treaty.Tasks); return accumulator; })
.Where(x => x.AssignedTo.Equals(companyId) && x.StatusId == statusId).ToList();
return tasks;
}
好極了!現在我終於明白'SelectMany'用於什麼了:) – Kassem