Aggregate
当用作具有多个子句的 Linq 表达式的第一个(外部)子句时,VB.NET 的查询是否存在致命缺陷,Into
因为每个Into
子句都是单独执行的?
SELECT MIN(ZoneMin), MAX(ZoneMin) FROM Plant
LINQ to SQL中的“明显”答案是
Dim limits = Aggregate p In Plants Select p.ZoneMin Into Min(), Max()
但是,此答案实际上检索了单独的SQL 查询中的每个Min
and Max
(如果您包括其他聚合函数,如Count
and Average
) 。这在 LINQPad 中很容易看到。
是否存在 LINQPad 未显示的事务(或其他使这些查询原子化的事物),或者这是等待发生的竞争条件?(因此,您必须执行上述问题的答案中显示的技巧,以强制执行返回多个聚合的单个查询。)
总之,是否有使用Aggregate
在单个(或至少“原子”)查询中返回多个聚合函数的 LINQ-to-SQL 查询?
(我也说“显而易见”,因为对我来说显而易见的答案Aggregate p In Plants Into Min(p.ZoneMin), Max(p.ZoneMin)
实际上是两次检索整个表,即使在优化时也是如此,然后使用 Linq-to-EntitiesMin
并Max
获得结果:-()