2017-01-23 100 views
2

我們在LINQ to SQL中有orderby子句,就像下面一樣,但是我們有什麼分頁功能嗎?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

是。你必須通過「跳過」和「採取」方法來做到這一點。 –

回答

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謝謝編輯 – Feriloo

+0

謝謝@Feriloo,但我沒有問及如何使用Skip和Take best,但只是可能的任何其他工作(可能是linq到SQL)。 –