Ответ 1
Чтобы достичь той же производительности, что и исходный запрос, вам нужно будет использовать группировку (константой для минимизации воздействия, например 0
), чтобы вы могли ссылаться на один и тот же набор записей дважды в одном запросе, Использование имени таблицы приводит к созданию нового запроса для каждой ссылки. Попробуйте следующее:
(from plant in db.Plants
group plant by 0 into plants
select new { Min = plants.Min(p => p.ZoneMin), Max = plants.Max(p => p.ZoneMin) }
).Single()
Выдает следующий запрос:
SELECT MIN(plants.ZoneMin), MAX(plants.ZoneMin)
FROM (SELECT 0 AS Grp, ZoneMin FROM Plants) AS plants
GROUP BY plants.Grp
И после того, как оптимизатор будет выполнен с ним, он выплевывает что-то, эквивалентное вашему запросу, по крайней мере, согласно SQL Server Management Studio.