Я хочу найти самый быстрый способ получить минимальный и максимальный столбцы в таблице с одним обратным вызовом Linq to SQL. Поэтому я знаю, что это будет работать в двух раундах:
int min = MyTable.Min(row => row.FavoriteNumber);
int max = MyTable.Max(row => row.FavoriteNumber);
Я знаю, что могу использовать group
, но у меня нет предложения group by
, я хочу агрегировать по всей таблице! И я не могу использовать .Min без группировки в первую очередь. Я попробовал это:
from row in MyTable
group row by true into r
select new {
min = r.Min(z => z.FavoriteNumber),
max = r.Max(z => z.FavoriteNumber)
}
Но это сумасшедшее предложение группы кажется глупым, а SQL-код более сложный, чем это должно быть.
Итак, есть ли способ получить правильный SQL?
EDIT: Эти ребята тоже не удалось: Linq to SQL: как агрегировать без группы?... lame надзор дизайнеров LINQ, если на самом деле нет ответа.
РЕДАКТИРОВАТЬ 2: Я рассмотрел свое собственное решение (с предложением бессмысленной константы по условию) в анализе плана выполнения SQL Server Management Studio, и мне кажется, что он идентичен плану, создаваемому:
SELECT MIN(FavoriteNumber), MAX(FavoriteNumber)
FROM MyTable
поэтому, если кто-то не придумает более простой или равноправный ответ, я думаю, что должен отмечать его как ответ на вопрос. Мысли?