Я хочу найти самый быстрый способ получить минимальное и максимальное значения столбца в таблице с помощью одного обращения Linq к 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?
РЕДАКТИРОВАТЬ: Эти ребята тоже не удалось: Linq to SQL: как агрегировать без группы с помощью? ... хромает надзор за дизайнерами LINQ, если на самом деле нет ответа.
РЕДАКТИРОВАТЬ 2: Я рассмотрел свое собственное решение (с бессмысленной константой group by by) в анализе плана выполнения SQL Server Management Studio, и мне кажется, что оно идентично плану, сгенерированному:
SELECT MIN(FavoriteNumber), MAX(FavoriteNumber)
FROM MyTable
Поэтому, если кто-то не может придумать более простой или столь же хороший ответ, я думаю, что я должен пометить его как отвеченный самостоятельно. Мысли