sqlsugar分页查询语句例子详解

page.DataSource = Db.Queryable<T>().Where(where)
    .OrderByIF(!string.IsNullOrEmpty(parm.Sort), 
    $"{ parm.OrderBy } {(parm.Sort == "descending" ? "desc" : "asc")}")
    .ToPageList(parm.PageIndex, parm.PageSize, ref totalCount ,ref totalPages);

这段代码使用了 SqlSugar 数据库 ORM 库,通过动态生成 LINQ 查询语句,从数据库中获取指定页的数据。它在操作 Db.Queryable<T>() 时动态构建了查询条件、排序方式,并进行了分页操作。

解释

  1. Db.Queryable<T>():

    • Db 是 SqlSugar 的数据库上下文对象,通过它的 Queryable<T>() 方法来创建一个 T 类型的查询对象。
    • <T> 是一个泛型类型参数,代表一个实体类(如 Sys_Users),它映射到数据库中的某个表。
  2. Where(where):

    • Where 方法用于向查询中添加过滤条件。
    • where 是一个表达式,它指定了如何过滤数据。它可以是一个简单条件表达式,也可以是一个复杂的条件组合。
    • 例如,where 可能包含条件:m => m.UserID == "123",或多个条件的组合:m => m.Age > 18 && m.IsActive == true
  3. OrderByIF:

    • OrderByIF 是一个有条件的排序方法。
    • 它的第一个参数是一个布尔值,用于决定是否进行排序。在这个例子中,排序条件为 !string.IsNullOrEmpty(parm.Sort)
      • 如果 parm.Sort 不为空,表示需要进行排序。
    • 第二个参数为排序的字段和方向,由字符串 "{parm.OrderBy} {(parm.Sort == "descending" ? "desc" : "asc")}" 决定。
      • parm.OrderBy 是排序的字段名。
      • parm.Sort 决定排序的顺序:如果它的值为 "descending",则排序方向为 desc;否则为 asc
  4. ToPageList:

    • ToPageList 方法用于分页查询,它接收四个参数:
      • parm.PageIndex:页码,表示获取第几页的数据。
      • parm.PageSize:每页数据的条数。
      • ref totalCount:引用参数,用于接收总记录数。
      • ref totalPages:引用参数,用于接收总页数。
    • 此方法执行查询,并返回一个分页列表。

Where 方法中的可能内容

Where 方法接受一个表达式或 Lambda 表达式作为参数,通常有以下几种形式:

  1. 简单条件:

    • m => m.UserID == "123": 查询用户ID为"123"的记录。
    • m => m.Age > 18: 查询年龄大于18的记录。
  2. 多个条件的组合:

    • m => m.UserName.Contains("John") && m.IsActive == true:
      • 查询用户名中包含"John"并且用户是激活状态的记录。
  3. 动态条件:

    • m => m.RoleID == roleID:
      • 条件根据变量 roleID 动态变化,例如 roleID 是一个方法参数。
    • predicate.ToExpression():
      • 动态构建的表达式条件,例如使用 Expressionable 构建的复杂查询条件。
  4. Null 检查:

    • m => m.Email != null: 查询邮箱不为空的记录。
  5. 集合操作:

    • m => new List<int> {1, 2, 3}.Contains(m.Status):
      • 查询用户状态为1、2、3中的任意一个的记录。
  6. 日期和范围查询:

    • m => m.CreatedDate >= startDate && m.CreatedDate <= endDate:
      • 查询在某个日期范围内的记录。

总结

这段代码利用 SqlSugar 库的链式方法构建查询,通过动态设置 Where 条件和排序字段,实现灵活的分页数据查询。Where 方法中的内容可以根据实际业务需求,动态构建各种查询条件,从简单的相等、范围查询到复杂的组合条件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值