Справка по LINQ / Lambda для SQL Group By + MAX? - PullRequest
1 голос
/ 21 октября 2011

Мне было интересно, может ли кто-нибудь помочь мне с лямбда-запросом или запросом LINQ (предпочтительно, лямбда-выражением) на основе следующего SQL-запроса. Я попытался и прошел немного, но не повезло: (

SELECT TOP 1 MAX(cv.ProductID) as MaxProductID, MAX(ap.RegionAsLocationID) RegionID,
   COUNT(cv.ProductID) as ProductCount 
FROM CustomerVouchers cv
INNER JOIN Products p on p.id = cv.ProductID and p.status = 3
INNER JOIN APs ap on ap.id = p.apid
WHERE cv.Status = 1
GROUP BY cv.ProductID
ORDER BY ProductCount DESC

SQL возвращает результат, подобный этому:

MaxProductID | RegionID | ProductCount
123 | 16862 | 3

Я следую за столбцами "максимальный результат", где MAX() будет записью ваучеров клиента, и в отношениях, в которых найдено наибольшее количество идентификаторов продукта.

Спасибо, банда.

1 Ответ

2 голосов
/ 21 октября 2011

Предполагая, что ctx - ваша модель сущности, используйте следующее.

 var result = from cv in ctx.CustomerVoucher
                         join p in ctx.Products on p.id equals cv.ProductID && p.status == 3
                         join ap in ctx.APs on ap.id equals prop.apid
                         where cv.status == 1
                         group cv by cv.ProductID into g
                         select new { MaxProductID = g.Max(cv => cv.ProductID), RegionID = g.max(ap => ap.RegionAsLocationID), ProductCount = g.Count(cv => cv.ProductID) };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...