真有趣。數據庫
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();