Использование функции MIN в LINQ - PullRequest
2 голосов
/ 17 февраля 2012

У меня есть SQL-запрос представления.Это представление

SELECT
  [ID]
  [Name],
  [Category],
  MIN(OrderDate) as OrderDate, 
  MIN(DeliveryDate) as DeliveryDate
GROUP BY
  [ID], [Name], [Category]
FROM
  [OrdersView]

Я знаю, что этот запрос правильный, потому что мой администратор базы данных дал его мне.Но мне нужно конвертировать его в LINQ.В настоящее время у меня есть следующее:

var orders = from o in dataContext.OrdersView
             group o by new { o.ID, o.Name, o.Category } into grouping
             select new Order() {
               ID = grouping.Key.ID,
               Name = grouping.Key.Name,
               Category = grouping.Key.Category,
               OrderDate = ?,
               DeliveryDate = ?
             };

Моя проблема в том, что я не знаю, как выполнить функцию MIN для OrderDate и DeliveryDate и использовать эти значения в моем запросе LINQ.К сожалению, я не могу изменить базу данных, потому что она заблокирована.Может кто-нибудь указать мне правильное направление?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 17 февраля 2012

OrderDate = grouping.Min(a => a.OrderDate)

DeliveryDate = grouping.Min(a => a.DeliveryDate)

Редактировать: Использовано o вместо grouping случайно. Это должно сделать это для вас.

1 голос
/ 17 февраля 2012
var orders = from o in dataContext.OrdersView
         group o by new { o.ID, o.Name, o.Category } into grouping
         let orderDate = grouping.Min(order => order.OrderDate)
         let deliveryDate = grouping.Min(order => order.DeliveryDate)
         select new Order() {
           ID = grouping.Key.ID,
           Name = grouping.Key.Name,
           Category = grouping.Key.Category,
           OrderDate = orderDate,
           DeliveryDate = deliveryDate
         };

В будущем я рекомендую использовать LINQPad для тестирования ваших запросов. Позволяет просматривать сгенерированный код SQL.

...