簡體   English   中英

LINQ查詢中的orderby Count(other_table)

[英]orderby Count(other_table) in linq query

如標題中所述,我想使用另一個表的列對結果表進行orderby

var products = (from p in db.Products
               join o in db.OrderDetails on p.ProductID equals o.ProductID
               orderby count(o.Quantity) <-- want to do something like this
               select p).Distinct().Take(8).ToList();

下面是SQL等效語句。

SELECT Products.ProductID FROM Products
INER JOIN OrderDetail on OrderDetail.ProductID = Products.ProductID
GROUP BY Products.ProductID
ORDER BY COUNT(OrderDetail.Quantity)

而且我正在獲得理想的結果。 但是如何使用LINQ做到這一點?

只需創建一個詞典,鍵為產品,值為計算數量,然后執行查詢。

或這樣做:

var product = p in resultOfTheJoin
        let count = resultOfTheJoin.Quantity.Count()
        orderby count
        select p;

如果我明白的話,您就需要這樣。 請嘗試一下:

       var query = (from p in db.Products
                     join o in db.OrderDetails on p.ProductID equals o.ProductID into orderTemp
                     select new type
                     {
                       Product_id = p.Product_id,
                       //set product attribtes,
                       OrderDetail_id = orderTemp.OrderDetail_id,
                       Quantity = orderTemp.Quantity,
                       // set OrderDetail attributtes

                     }.OrderBy(l => l.Quantity.Count()).ToList();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM