2013-09-12 4 views
0

Может кто-нибудь, пожалуйста, помогите мне преобразовать следующий t-sql в C# linq?Linq2SQL Help Converting row_number и partition

select 
    clientid, 
    orderId 
from 
(
    select 
     row_number() over (partition by clientid order by purchasedate desc) as rownum, 
     clientid, 
     id as orderId 
    from ordertraining 
) as x where rownum = 1 
+0

Почему? Почему бы не использовать только представление? Почему это абсолютно * есть * в LINQ2SQL? Вы будете удивлены SQL, который он создает для чего-то подобного. – Arran

+0

Просто все. – Grant

ответ

1

Вы можете получить тот же результат с помощью следующего запроса LINQ:

from o in Orders 
group o by o.clientId into g 
select g.OrderByDescending(x => x.purchasedate).FirstOrDefault(); 

, но он не будет генерировать тот же SQL. Вместо этого он будет использовать CROSS APPLY.

+0

Просто хочу добавить, что желаемый SQL не может быть создан LINQ2SQL –

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