Для достижения той же производительности, что и в исходном запросе, вам нужно использовать группирование (по константе, чтобы минимизировать влияние, например, 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.