簡體   English   中英

如何使用TOP,COUNT和GROUP BY轉換SQL語句以使用LINQ返回對象列表

[英]How to convert SQL Statement with TOP, COUNT and GROUP BY to return an object list with LINQ

有誰知道如何將此SQL語句轉換為LINQ到列表?

SELECT TOP(5) COUNT(Tickets.CategoryId), Categories.CategoryName
FROM Tickets 
INNER JOIN Categories ON Tickets.CategoryId = Categories.CategoryId
GROUP BY Categories.CategoryName
ORDER BY 1 DESC

結果將是這樣嗎?

public static List<Categories> List()
{
    MyEntities db = new MyEntities();

    var categories = (from ticket in db.Ticket.Include("Category")
                        group ticket by ticket.Category.CategoryId into g
                        orderby g.Count() descending
                        select g.FirstOrDefault().Category).Take(5).ToList();

    return categories;

}

您是否嘗試過通過查詢創建視圖並從Linq調用視圖? 在Linq看來,它就像一張桌子。 您可以使用上面提供的確切查詢。

您可能正在尋找僅Linq的答案,但是使用視圖是到達那里的快速方法,並且如果您經常點擊它,性能可能會有所提高。

我喜歡將DB用於它擅長的事情,在我看來,這可能是一個很好的選擇。

如果使用僅支持Linq的解決方案,則可能需要花幾分鍾時間嘗試查看視圖並進行時序測試,以查看它是否對您的應用有所幫助。

看起來您只需要更改語句的“ SELECT”部分:

select new { Count = g.Count(), 
    CategoryName = g.FirstOrDefault().Category.CategoryName }

暫無
暫無

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

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