在用EF或者其他对象数据类型时,常常会用到分页方法,除去原生SQL分页方法外,linq如何分页呢
1.首先定义PageSize(每页显示的条数),与PageIndex(页码)
当PageIndex为0时:
var query = (from t in List
orderby t.排序字段 select t).Skip(PageIndex * pageSize).Take(pageSize);
2.当 页码PageIndex定义为1时:
var query = (from t in List
orderby t.排序字段 select t).Skip((PageIndex - 1) * pageSize).Take(pageSize);
注意事项:
1.当使用Linq to ef 进行数据库分页调取数据时,要排序的字段可能为空时,应将所有的查询出再进行分页操作,不然可能会造成分页出来的数据有周期重复性。
2.很明显,数据量大的时候,linq查询效率是要低于原生sql语句的,且优化很麻烦,所以稍大型数据,分页还是存储过程比较合适