2017-01-23 13 views
2

У нас есть предложение orderby в LINQ to SQL, как показано ниже, но у нас есть что-то для разбивки на страницы?Разбиение страницы с помощью LINQ to SQL

from trans in DB.transactions 
orderby trans.column descending 
select trans; 

Или мы должны сделать это вручную (вроде), например, следующим запросом?

(from trans in DB.transactions 
orderby trans.column descending 
select trans).Skip(noOfRecords).Take(pageSize); 
+1

Да. Вы должны сделать это, помогая методам 'Skip' и' Take'. –

ответ

0

Как я знаю, что вы должны использовать .Skip и .Take, но вы можете написать расширение для IQueryable для легкой вашей работы:

public static class Extensions 
{ 
    public static IQueryable<T> Paging<T>(this IQueryable<T> source, int pageNumber, int pageLength) 
    { 
     return source.Skip(pageNumber * pageLength).Take(pageLength); 
    } 
} 

var source = (from trans in DB.transactions 
orderby "cancellation_reason_id" descending 
select trans); 

source = source.Paging(0, 10); // Get first page with 10 item 
+2

Должно быть 'pageNumber * pageLength', а не' & ' – Mats391

+0

@ Mats391 Thank's Edited – Feriloo

+0

Спасибо @Feriloo, но я не спросил, как использовать Skip и Take best, а просто возможность любой другой работы (может быть, что-то в linq к SQL). –