我想通過“ItemTitle”列在我的“訂單”表中查找最受歡迎的專案。
ItemTitle 具有以下內容:
- 國王漢堡
- 夏威夷菜
- 意大利經典
- 提拉米蘇
- 國王漢堡
- 國王漢堡
- 意大利經典
- 意大利經典
- 國王漢堡
查找最受歡迎的專案的最佳 LINQ 查詢是什么?謝謝!
這是我的嘗試:
return _DbContext.Orders.GroupBy(x => x.ItemTitle).Where(g => g.Count() > 1).OrderByDescending(g => g.Count()).Select(g => g.Key).Take(1);
它正在作業,但是,它有一個錯誤。錯誤是訂單有數量列。例如:在下面的串列中有 4 個 King Burger's x 1 - 數量。如果提拉米蘇有 x 10 - 數量,那么現在最受歡迎的應該是提拉米蘇。
uj5u.com熱心網友回復:
如果你不關心關系,那么你可以使用這個:
var query =
orders
.GroupBy(x => x.ItemTitle, x => x.Quantity)
.Select(x => new { ItemTitle = x.Key, Quantity = x.Sum() })
.OrderByDescending(x => x.Quantity)
.Take(1)
.SingleOrDefault();
否則,如果跟蹤關系很重要,那么這有效:
var querySupportingTies =
orders
.GroupBy(x => x.ItemTitle, x => x.Quantity)
.Select(x => new { ItemTitle = x.Key, Quantity = x.Sum() })
.ToLookup(x => x.Quantity, x => x.ItemTitle)
.OrderByDescending(x => x.Key)
.Select(x => new
{
Quantity = x.Key,
ItemTitles = x.ToArray()
})
.Take(1)
.SingleOrDefault();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/389229.html
標籤:网站 。网 asp.net-mvc
