如何在LINQ查詢中實(shí)現(xiàn)分頁?實(shí)際上,如果可以模仿sql TOP函數(shù),我會(huì)感到滿意。但是,我確信無論如何都需要盡快提供完整的分頁支持。var queryResult = from o in objects where ...
select new
{
A = o.a,
B = o.b }
????????? TOP 10????????
3 回答

郎朗坤
TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊
使用Skip
和Take
絕對是要走的路。如果我實(shí)現(xiàn)這個(gè),我可能會(huì)編寫自己的擴(kuò)展方法來處理分頁(使代碼更具可讀性)。實(shí)施當(dāng)然可以使用Skip
和Take
:
static class PagingUtils { public static IEnumerable<T> Page<T>(this IEnumerable<T> en, int pageSize, int page) { return en.Skip(page * pageSize).Take(pageSize); } public static IQueryable<T> Page<T>(this IQueryable<T> en, int pageSize, int page) { return en.Skip(page * pageSize).Take(pageSize); }}
該類定義了兩個(gè)擴(kuò)展方法 - 一個(gè)用于IEnumerable
和一個(gè)用于IQueryable
,這意味著您可以將它與LINQ to Objects和LINQ to SQL一起使用(編寫數(shù)據(jù)庫查詢時(shí),編譯器將選擇IQueryable
版本)。
根據(jù)您的分頁要求,您還可以添加一些其他行為(例如,處理負(fù)數(shù)pageSize
或page
值)。以下是如何在查詢中使用此擴(kuò)展方法的示例:
var q = (from p in products where p.Show == true select new { p.Name }).Page(10, pageIndex);
- 3 回答
- 0 關(guān)注
- 475 瀏覽
添加回答
舉報(bào)
0/150
提交
取消