Linq的分頁

真有趣。數據庫

C#裏面的List對象、set對象,均可以直接使用Linq(這是由於,它們都實現了接口IEnumable?),好比說:Where()、OrderBy()什麼的。假若有點SQL基礎的人,一看這些方法,會以爲很親切。this

在ORM、EF以前,咱們操做數據庫,主要是在DAL裏寫SQL,而後調用各類SqlHelper。如今好了,數據庫與開發代碼分離,上帝的歸上帝,凱撒的還給凱撒,代碼裏面只操做各類對象了,直接的select * from 叉叉 where 叉叉 order by 叉叉沒有了,代之以:對象

lisObj.Where(m=>m叉叉).OrderBy(m=>m.Id)blog

呵呵,不過還別說,linq用來就是爽。我開始習慣,並忍不住愈來愈喜歡了。接口

now,如今使用Entity Framwork,各類對象都直接使用linq,那麼分頁該怎麼處理呢?ip

答案是將Skip()和Take()兩個方法結合使用:開發

Skip((pageIndex - 1) * pageSize):忽略當前頁以前的記錄it

Take(pageSize):讀取指定數量的記錄,也就是當前頁的記錄class

完整示例:基礎

 

     IList<Test> list = this.DbContext.Set<Test>()
    .Where(m => m.ProjectID == projectId && m.Assigner == assigner)
    .OrderByDescending(m => m.ID)
    .Skip((pageIndex - 1) * pageSize)
    .Take(pageSize)
    .ToList();  
相關文章
相關標籤/搜索