.Net MVC分頁應(yīng)用Linq的分頁
C#里面的List對象、set對象,都可以直接使用Linq(這是因為,它們都實現(xiàn)了接口IEnumable?),
比如說:
Where()、OrderBy()什么的。假如有點SQL基礎(chǔ)的人,一看這些方法,會覺得很親切。
在ORM、EF之前,我們操作數(shù)據(jù)庫,主要是在DAL里寫SQL,然后調(diào)用各種SqlHelper。
現(xiàn)在好了,數(shù)據(jù)庫與開發(fā)代碼分離,上帝的歸上帝,凱撒的還給凱撒,
代碼里面只操作各種對象了,直接的select * from 叉叉 where 叉叉 order by 叉叉沒有了,代之以:
lisObj.Where(m=>m叉叉).OrderBy(m=>m.Id)
呵呵,不過還別說,linq用來就是爽。我開始習(xí)慣,并忍不住越來越喜歡了。
now,現(xiàn)在使用Entity Framwork,各種對象都直接使用linq,那么分頁該怎么處理呢?
答案是將Skip()和Take()兩個方法結(jié)合使用:
Skip((pageIndex - 1) * pageSize):忽略當前頁之前的記錄
Take(pageSize):讀取指定數(shù)量的記錄,也就是當前頁的記錄
完整示例:
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();
原文鏈接:.Net MVC分頁Linq使用Skip和Take的分頁實例