真有趣。
C#裡面的List對象、set對象,都可以直接使用Linq(這是因為,它們都實作了接口IEnumable?),比如說:Where()、OrderBy()什麼的。假如有點SQL基礎的人,一看這些方法,會覺得很親切。
在ORM、EF之前,我們操作資料庫,主要是在DAL裡寫SQL,然後調用各種SqlHelper。現在好了,資料庫與開發代碼分離,上帝的歸上帝,凱撒的還給凱撒,代碼裡面隻操作各種對象了,直接的select * from 叉叉 where 叉叉 order by 叉叉沒有了,代之以:
lisObj.Where(m=>m叉叉).OrderBy(m=>m.Id)
呵呵,不過還别說,linq用來就是爽。我開始習慣,并忍不住越來越喜歡了。
now,現在使用Entity Framwork,各種對象都直接使用linq,那麼分頁該怎麼處理呢?
答案是将Skip()和Take()兩個方法結合使用:
Skip((pageIndex - 1) * pageSize):忽略目前頁之前的記錄
Take(pageSize):讀取指定數量的記錄,也就是目前頁的記錄
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();