Spo*_*ook 0 c# linq entity-framework aggregate-functions
我试图在LINQ(EF6)中实现以下功能:
SELECT count(A), sum(B), average(C)
FROM TableA,
LEFT JOIN TableB ON ...
LEFT JOIN TableC ON ...
WHERE
(very complicated conditions)
Run Code Online (Sandbox Code Playgroud)
C#代码如下所示:
IQueryable<Entity> = dbSet
.Include(e => e.entityB)
.Include(e => e.EntityC)
.Where( <very complicated conditions> );
Run Code Online (Sandbox Code Playgroud)
如何在不同的字段上应用多个聚合函数?具体来说,在某种程度上,这不会导致复杂的条件在结果查询中反复复制?
您可以通过常量技巧使用组来获取具有单个SQL查询(以及共享复杂过滤器)的所有聚合:
var result = dbSet
.Where( <very complicated conditions> )
.GroupBy(e => 1) // aribitrary value
.Select(g => new
{
CountA = g.Count(),
SumB = g.Sum(e => e.EntityB.PropertyB),
AverageC = g.Average(e => e.EntityC.PropertyC),
})
.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
564 次 |
最近记录: |