Linq to SQL - 按订购的总数量对产品进行分组

时间:2011-05-10 05:59:28

标签: linq-to-sql group-by sql-order-by

我正在尝试使用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 个答案:

答案 0 :(得分:1)

执行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);