简单动态

与EF区别 sqlsugar queryable是引用类型,我们需用queryable.clone()解决一些问题

动态查询(拼接Lambd或SQL) - 图1

案例1: WhereIF函数

根据条件判段是否执行过滤,我们可以用WhereIf来实现,true执行过滤,false则不执行

var list = db.Queryable<Student>()

.WhereIF(!``string``.IsNullOrEmpty(a),it => it.Name == a)

.WhereIF(!``string``.IsNullOrEmpty(b), it => it.Name == b).ToList();

案例2.:MergeTable 函数 4.4**

是将多表查询的结果Select里的内容变成一张表, 如果是多表查询的时候,我们无论是使用 where 还是 orderBy 都需要加别名,这样我们就不能实现动态排序,因为我不知道别名叫什么, 可以用MergeTable解决这个问题

以前

动态查询(拼接Lambd或SQL) - 图2

现在

动态查询(拼接Lambd或SQL) - 图3

案例3: SqlQueryable 4.5.2.5

可以方便的把SQL变成表来操作

动态查询(拼接Lambd或SQL) - 图4

案例4: 将表单组装成 List<ConditionalModel>实现查询 4.5.9

动态查询(拼接Lambd或SQL) - 图5

动态查询(拼接Lambd或SQL) - 图6

案例5: 拼接拉姆达 4.5.9.8

动态查询(拼接Lambd或SQL) - 图7

复杂动态

Queryable是支持字符串与拉姆达混用或者纯字符串拼接模式,可以满足复杂的一些需求

例子1:

动态查询(拼接Lambd或SQL) - 图8

例子2:

动态查询(拼接Lambd或SQL) - 图9

例子3:

动态查询(拼接Lambd或SQL) - 图10

安全拼SQL

使用参数化过滤

动态查询(拼接Lambd或SQL) - 图11

字段是无法用参数化实现的,我们就可以采用这种方式过滤

动态查询(拼接Lambd或SQL) - 图12