EF:如何按多列分组并包含密钥实体的子项

时间:2017-09-12 18:13:43

标签: entity-framework entity-framework-6

在EF查询中,我想将实体分组为2列。然后包括分组列的实体实例

以下是通用存储库。我已经删除了一些简洁的代码

  public class MyGenericRepository
  {
        public IQueryable<TEntity> GetQuery<TEntity>() where TEntity : class
        {
            return _dbContext.Set<TEntity>();
        }
  }

下面我按PackageDetailTemplateID列对DocumentID实体进行分组。分组后,我只对第一个(组密钥)实体感兴趣。我还想包括密钥实体的TemplateDocument子实体

IEnumerable<int> ids= GetIDs(); 

  var result = await _repository.GetQuery<PackageDetail>()
                .Include(x => x.Template)
                .Include(x => x.Document)
                .Where(x => ids.Contains(x.ID))
                .GroupBy(x => new { x.TemplateID, x.DocumentID })
                .Select(x => x.FirstOrDefault())
                .ToListAsync();

上面的代码正确地进行分组并产生正确的结果。但结果PackageDetails不包括TemplateDocument个孩子。

0 个答案:

没有答案