【发布时间】:2022-01-12 14:40:54
【问题描述】:
我想做这样的事情:
var projectHistory = await Context.Tasks.GroupBy(x => x.ProjectId).Select(x => new ProjectHistoryStatModel
{
ProjectId = x.Key,
CompletedTasks = x.Where(y => y.StatusId == 4).Count(),
InProgressTasks = x.Where(y => y.StatusId == 3).Count(),
DelayedTasks = x.Where(y => y.EndDate < DateTime.Now && y.StatusId != 4).Count(),
DependentTasks = x.Where(y => y.Dependents.Any()).Count(),
TotalTasks = x.Count()
}).ToListAsync();
但是 DependentTasks 属性 DependentTasks = x.Where(y => y.Dependents.Any()).Count(), 正在抛出:
无法对包含聚合或子查询的表达式执行聚合函数。
嗯 y.Dependents 是一个集合,这就是它抛出问题的原因,我也试过这个:DependetTasks = Context.TaskDependencies.Where(y => x.Any(z => z.Id == y.TaskId)).Count(), 并抛出同样的错误。
你们能告诉我在对数据库的同一个请求中这样做的方法吗?
问候
【问题讨论】:
-
请说明您使用的是哪个ORM以及哪个版本。
标签: c# linq group-by collections