EF6:如何将两个不同的count()查询合并为一个?

时间:2016-04-21 09:11:14

标签: c# entity-framework linq entity-framework-6

var filesCount = files.Where(f => f.ParentId == folderId).Count();
var foldersCount = folders.Where(f => f.ParentId == folderId).Count();

我的主要目标是将数据库的往返从两个减少到一个。

背景

  • .NET Framework 4.5.2
  • 实体框架6

1 个答案:

答案 0 :(得分:3)

如果您有从文件夹到子文件夹以及从文件夹到文件的导航属性,则可以执行此类操作:

var result =
    folders
    .Where(x => x.Id == folderId)
    .Select(x => new
    {
        FolderCount = x.SubFolders.Count(),
        FileCount = x.Files.Count()
    })
    .FirstOrDefault();