2011-05-10 100 views
3

我試圖在使用LINQ to SQL的電子商務網站上獲得「熱門產品」的列表 - 產品已訂購併成爲換購表中的行,數量列以指示訂購的數量。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

做一個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); 
+0

尼斯工作Russau! – Spud 2011-05-10 12:11:05