首页 > 解决方案 > 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;
        }
    );

标签: c#entity-frameworkentity-framework-core

解决方案


如果要在使用聚合函数时交换集合,则必须使用 group

   group x by x.IrrelevantToMyProblemEntityinto g
   select new { Value = g.Key, Count = g.Count() };

推荐阅读