EF实现分页查询+条件查询+排序

先来看看几个LINQ to SQL的几个函数。

Take

说明:获取集合的前n个元素;延迟。即只返回限定数量的结果集。

var q = (

from e in db.Employees

orderby e.HireDate

select e)

.Take(5);

语句描述:选择所雇用的前5个雇员。

Skip 

说明:跳过集合的前n个元素;延迟。即我们跳过给定的数目返回后面的结果集。

var q = (

from p in db.Products

orderby p.UnitPrice descending

select p)

.Skip (10);

语句描述:选择10种最贵产品之外的所有产品。

OrderBy
适用场景:对查询出的语句进行排序,比如按时间排序 等等。
说明:按指定表达式对集合排序;延迟,:按指定表达式对集合 排序;延迟,默认是升序,加上descending表示降序,对应的扩展方法是 OrderBy和OrderByDescending

下面这个例子使用 orderby 按雇用日期对雇员进行排序:
var q =
from e in db.Employees
orderby e.HireDate
select e;
说明:默认为升序

看完这两个函数的使用方法,那么分页的思路也就很容易推出来了,若要显示第m页,每页n条数据,我们应该跳过n*(m-1)条数据,显示n条数据。

源码如下:

 

使用示例

//查询要求:每页10条,显示第2页,查询性别为“男”,按年龄增序排列

int totalRecord;

List<Student>result = studentService.LoadItems(10,2,out totalRecord,u=>u.Sex==”男”,u=>u.Age,True);

 

最近研究了点Linq to Sql的知识,发现还挺有意思的,欢迎大家和我一起交流。

 

from:https://blog.csdn.net/augus3344/article/details/45378877