我有一个MockDataStore
返回一个List<Task>
. 然后我会使用Aggregate
扩展方法来查询该列表。所以我正在做一个 LINQ-to-Objects 查询,它可以很好地完成这项工作。现在我已经用一个继承DbContext
类的类替换了我的模拟数据存储,相同的查询不再起作用,因为我不能使用具有主体的 lambda 表达式,因为它不能转换为表达式树。那么有没有办法绕过它并且仍然在 SQL 中完成聚合并避免在内存中进行聚合?下面是我的代码:
//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;
}