之前我们写的查询条件都是固定好的,至少在编程的时候就知道最终查询条件是什么了。但是在开发过程中,有时候并不会那么早的知道最终查询条件或者说查询需要根据用户输入来调整查询条件,那么如何实现呢?
常见的解决方案有以下几种:
使用SQL语句,动态拼接SQL语句,然后根据SQL语句执行返回结果
在使用Lambda表达式时,进行动态拼接Lambda表达式
获取IQueryable接口,然后根据条件添加方法进行查询
这三种方法各有优略,使用查询接口会有一个明显的问题就是对应用层开放了更高的权限,使用SQL语句也是同样的道理。所以更符合逻辑的是使用动态拼接Lambda表达式。
当然,SqlSugar在这三种方案之上,提供了另外两种方案:
正是上一篇文中提到的IConditionalModel和WhereIF。我们先来看一下IConditionalModel如何使用:
var conditions = new List<IConditionalModel>(); var query = context.Client.Queryable<Person>().Where(conditions);