php 条件查询分页查询语句怎么写,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⑴)条数据,显示n条数据。

源码以下:

///

/// 分页查询 + 条件查询 + 排序

///

/// 泛型

/// 每页大小

/// 当前页码

/// 总数量

/// 查询条件

/// 排序条件

/// 是不是升序

/// IQueryable 泛型集合

public IQueryable LoadPageItems(int pageSize, int pageIndex, out int total, Expression> whereLambda, Func orderbyLambda, bool isAsc)

{

total = MyBaseDbContext.Set().Where(whereLambda).Count();

if (isAsc)

{

var temp = MyBaseDbContext.Set().Where(whereLambda)

.OrderBy(orderbyLambda)

.Skip(pageSize * (pageIndex - 1))

.Take(pageSize);

return temp.AsQueryable();

}

else

{

var temp = MyBaseDbContext.Set().Where(whereLambda)

.OrderByDescending(orderbyLambda)

.Skip(pageSize * (pageIndex - 1))

.Take(pageSize);

return temp.AsQueryable();

}

}

使用示例

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

int totalRecord;

Listresult = studentService.LoadItems(10,2,out totalRecord,u=>u.Sex==”男”,u=>u.Age,True);

最近研究了点Linq to Sql的知识,发现还挺成心思的,欢迎大家和我1起交换。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值