[英]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.