Linq (MIN && MAX)
Что равно ниже sql в LINQ
select MIN(finishTimestamp) AS FromDate, MAX(finishTimeStamp) AS ToDate From Transactions
??
from t in Transactions
select new {
FromDate = ?,
ToDate = ?
}
Спасибо
Ответы
Ответ 1
Вы можете просто сделать
var transactionDates = from t in Transactions
select t.FinishTimeStamp;
var dates = new {
FromDate = transactionDates.Min(),
ToDate = transactionDates.Max()
};
Ответ 2
Чтобы использовать несколько агрегатов в Linq to SQL, в таблице без группировки, единственный способ избежать нескольких запросов - сделать "поддельную группу":
var q = from tr in dataContext.Transactions
group tr by 1 into g // Notice here, grouping by a constant value
select new
{
FromDate = g.Min(t => t.InvoiceDate),
ToDate = g.Max(t => t.InvoiceDate)
};
Kinda hacky, но сгенерированный SQL чист, и тем самым вы делаете только один запрос в базу данных.
Ответ 3
Вы также можете использовать агрегатные функции, если хотите (пример в VB)
Dim max = Aggregate tMax In Transactions Select tMax Into Max()