首页 > 解决方案 > 单个查询中来自多个表的多个计数 - EF Core、LINQ

问题描述

我提供了我正在解决的问题的简化版本,基本上,我想在单个查询中对继承相同接口的多个实体进行计数,我给出的示例是我当前的工作解决方案,但它不是在处理 20 多个实体时在生产中非常高效,因为每个计数都执行一个查询。有人对我如何使用 LINQ 查询语法来改进我当前的解决方案有任何建议吗?

public class EntitySummary {
     public EntityType EntityType { get; set; }
     public int Count { get; set; }
} 

public enum EntityType
{
   Entity1,
   Entity2,
   Entity3
}

public interface IDateModified {
     public DateTime? DateModified { get; set; }
}

public class Entity1 : IDateModified {
     public DateTime? DateModified { get; set; }
}

public class Entity2 : IDateModified {
     public DateTime? DateModified { get; set; }
}

public class Entity3 : IDateModified {
     public DateTime? DateModified { get; set; }
}

public void Summary(){

  var summary = new List<EntitySummary>{
      new EntitySummary {
       EntityType = EntityType.Entity1,
       Count = Context.Entity1.Count(x => x.DateModified < DateTime.Now)
      },
      new EntitySummary {
       EntityType = EntityType.Entity2,
       Count = Context.Entity2.Count(x => x.DateModified < DateTime.Now)
      },
      new EntitySummary {
       EntityType = EntityType.Entity3,
       Count = Context.Entity3.Count(x => x.DateModified < DateTime.Now)
      }
  }
}

标签: c#asp.netentity-frameworkasp.net-coreentity-framework-core

解决方案


推荐阅读