2015-06-08 5 views
0

Я пытаюсь получить это заявление sql в формате Linq без успеха. Вместо отображения всех данных я хочу отображать десять элементов из каждой категории. Любая помощь будет большой.Как преобразовать SQL в Linq

select * 
from (
    select *, 
      row_number() over(partition by T.category order by T.id desc) as rn 
from clothes as T 
) as T 
where T.rn <= 10; 

моя попытка по linq внизу;

var query= from (subquery) as DB in dataContext.table where DB.rn <=10; 
       select DB; 
var subquery = row_number() over(partition by DB.id order by DB.category desc) as rn from DB in dataContext.table as DB 
        select DB; 
+0

возможный дубликат [Роу \ _number над (Partition ххх) в Linq?] (Http://stackoverflow.com/ вопросы/9980568/row-number-over-partition-by-xxx-in-linq) – Chris

ответ

1

использование GroupBy, Take и SelectMany должны сделать трюк

var result = dataContext.table.GroupBy(m => m.category) 
      .SelectMany(g => g.OrderByDescending(x => x.Id).Take(10)); 
+0

Эй, Рафаэль, Это сработало. Спасибо огромное! – georgieboy

Смежные вопросы