Как мне заказать по дате desc мои сгруппированные товары и получить топ 20?
Например: в таблице Orderproduct есть OrderID, ProductId, Date, Price, я хочу сгруппировать их по ProductId и отсортировать каждое сгруппированное по Date desc, затем получить топ 20 и avg (цена).
На LINQ это как (но сгенерированный sql очень грязный и производительность очень плохая).
OrderProduct
.GroupBy(g => g.ProductId)
.Select(s => new{ s.Key, Values = s.OrderByDescending(o => o.Date).Take(20) })
.Select(s => new{ Avg = s.Values.Average(a => a.Price) } )