Linq to SQL - группировка товаров по общему заказанному количеству - PullRequest
3 голосов
/ 10 мая 2011

Я пытаюсь получить список «популярных продуктов» на сайте электронной торговли, используя LINQ to SQL - продукты упорядочены и становятся строками в таблице выкупа со столбцом количества, указывающим заказанное количество.

Вот соответствующие биты таблиц:

Продукт

    ProductId INT
    ProductTitle VARCHAR
    (other columns not shown)

Выкуп

    RedemptionId INT
    ProductId INT
    Quantity INT
    (other columns not shown)

У меня проблемы с группировкой, а затем упорядочением по сумме заказанного количества. Вот что у меня есть:

(from product in Products
join redemption in Redemptions on product.ProductId equals redemption.ProductId
group product by new { product.ProductId, product.ProductTitle } into g
orderby g.Sum(r => r.Key.Quantity) // Quantity is not part of the key :(
select g.Key).Take(5)

Хотя я могу сгруппировать продукты в объединении для погашения, я не могу заказать по сумме заказанных количеств.

В идеале я хочу, чтобы возвращался только объект продукта, а не анонимный тип, включая количество.

1 Ответ

1 голос
/ 10 мая 2011

Выполнение join into делает это намного проще:

var x = (from p in products
join r in redemptions on p.ProductId equals r.ProductId into pr
orderby pr.Sum(r => r.Quantity) descending
select p).Take(5);
...