c# - Entity Framework Core 中的 IQueryable 设置实体属性等于其他实体(表)上的行数
问题描述
我有一个实体,它有自己的日志表(单独的实体)。我需要返回我的实体,该实体具有用于记录日志实体上的行数的属性,并且我想通过一次数据库之旅来完成这一切。我尝试使用Select()
on 方法IQueryable
设置属性值,但这迫使我首先调用AsEnumerable()
,并且我有另一个自定义扩展方法,IQueryable
后来我无法更改。
我怎样才能做到这一点?
这是AsEnumerable()
用于获取集合的方法,但不适用于我的情况:
_context
.Include(x => x.IrrelevantToMyProblemEntity)
.AsEnumerable()
.Select( x =>
{
x.LogCount = _context.LogEntity.Count();
return x;
}
);
解决方案
如果要在使用聚合函数时交换集合,则必须使用 group
group x by x.IrrelevantToMyProblemEntityinto g
select new { Value = g.Key, Count = g.Count() };