Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何更快地分组和计数子实体?_C#_Entity Framework_Linq - Fatal编程技术网

C# 如何更快地分组和计数子实体?

C# 如何更快地分组和计数子实体?,c#,entity-framework,linq,C#,Entity Framework,Linq,我的查询很慢 我已经编写了以下查询,这个查询给了我预期的结果 dbContext.ParentEntity.GroupBy(x => new { x.Propery1, x.Propery2}, (key, group) => new { Propery_1= key.Propery1, Propery_2= key.Propery2, Count = group.

我的查询很慢

我已经编写了以下查询,这个查询给了我预期的结果

dbContext.ParentEntity.GroupBy(x => new { x.Propery1, x.Propery2}, (key, group) => new
            {
                Propery_1= key.Propery1,
                Propery_2= key.Propery2,
                Count = group.Sum(x => x.Level1Childs.SelectMany(x => x.Level2Childs.SelectMany(x => x.Level3Childs).Where(x => x.IssuposedToBeCounted()).Count())
            }).ToList()
它向数据库发出x.Propery1.count*x.Propery2.count请求。。。
如何重写查询以使其更快?

这称为N+1问题。尝试一次从数据库获取所有数据,然后做任何您想做的事情。
例如,在ORM工具中,这通常源于延迟加载

,通常它应该在一个查询中完成。如果您使用group by和select语句
Where(x=>x.IssuposedToBeCounted())
执行此操作,则可能会导致您的查询在客户端强制求值,而不是将其转换为SQL语句