Чистый linq (т.е. синтаксис запроса)? Не то, что я знаю.
Linq к SQL? Конечно - благодаря поддержке TSQL:
var query = ctx.ExecuteQuery<Product>(@"
select x.UserName, x.ProductName, x.SortOrder
from (
select p.UserName, p.ProductName, p.SortOrder,
ROW_NUMBER() over (partition by p.UserName order by p.SortOrder)
as [Rank]
from Products p) x
order by x.[Rank], x.UserName, x.SortOrder");
Как и в случае любого нетривиального запроса, здесь может быть важна стратегия индексации таблицы. Вы можете попробовать индекс, охватывающий UserName
и SortOrder
(измерить stats-IO), затем удалить его и попробовать индекс, охватывающий SortOrder
и UserName
(наоборот), снова измерить stats-IO ).