我正在尝试使用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)
虽然我可以将联接中的产品分组到兑换,但我无法按订购数量的总和进行订购。
理想情况下,我只希望返回产品对象,而不是包含数量的匿名类型。
答案 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);