[英]Linq grouping by Max not working
我有一張產品表
Id | Name | Order
1 | product 1 | 5
1 | product 1 | 9
1 | product 1 | 2
2 | product 2 | 0
3 | product 3 | 1
我只需要退回具有最大訂購號的產品:
Id | Name | Order
1 | product 1 | 9
2 | product 2 | 0
3 | product 3 | 1
試過這個,但它不起作用:
var items = (from i in db.products
group i by new
{
i.Id,
i.Name,
i.Order
} into g
select new
{
g.Key.Id,
g.Key.Name,
Order = g.Where(d => d.Order == g.Max(xx => xx.Order )).First().Order })
但它仍然會返回所有5個結果。 謝謝
更改
group i by new
{
i.Id,
i.Name,
i.Order
} into g
成
group i by new
{
i.Id,
i.Name,
} into g
我想我也會重寫最后一個表達式
Order = g.OrderByDescending(xx => xx.Order).First().Order
主要是因為我認為它更容易閱讀,但生成的SQL也可能更有效。 但這只是一個問題,可以使用SQL Profiler驗證任何性能差異。
您仍有5行的原因是因為組合的順序與您的組不同。 如果您想使用原始訂單,或使用order by來獲取最大Order,這將是查詢。
var items = (from i in db.products
group i by new
{
i.Id,
i.Name
} into g
select new
{
g.Key.Id,
g.Key.Name,
Order = g.Where(d => d.Order == g.Max(xx => xx.Order )).First().Order })
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.