你的位置: 首页 / C#开发 / 正文

C#/.NET应用程序编程开发中根据查询条件动态创建LINQ的Where查询表达式的实现方案

145 读完约需 3 分钟 发布于: 2019-08-30 14:53

前言

在C#/.NET应用程序编程开发中,LINQ是操作集合数据的强有力工具,我们可以使用LINQ对集合数据进行排序、求和、取最大值/最小值、筛选符合条件的子集合等等操作。
其中lambda表达式是完成上述这一系列操作的基础,每一个LINQ的静态扩展方法均支持lambda表达式参数,比如我们有一个用户(Customer)实体类:

初始化一个Customer集合:

现要从这个用户集合(_customers)中查询Age<13的所有用户(Customer),我们可以使用如下的lambda表达式:

输出结果:

这是我们预料的输出结果。

产品经理告诉你他需要更加细化的数据,需要筛选出用户年龄Age<13并且用户状态Status=1的用户,这时我们可以这样添加查询条件:

输出结果:

以上的查询条件都是在事先知道的情况下硬编码的,那如果查询条件不是固定的,也就是只有条件在满足某种情况时才追加lambda表达式,我们应该如何动态创建lambda查询表达式呢?比如我将查询用户提取成如下的方法:

模拟的请求参数实体类为:

现要求完成以下的动态查询:

如何实现以上的动态lambda表达式查询呢?

PredicateBuilder

这里为大家提供一个可以动态创建lambda表达式的帮助类PredicateBuilder,代码如下:

完成了PredicateBuilder的帮助类之后,我们只需引入类所在的命名空间,然后创建一个默认的表达式,之后便可使用它的静态扩展方法And,Or或者Not来动态创建lambda表达式了,调用方式:

感谢你的阅读,我是Rector。

如果你觉得本文对你有帮助,还请手动为我点个赞,谢谢!!!

源码下载

郑重申明:本文未经许可,禁止任何形式转载

阅读了该文章的人还浏览了...

本文永久链接码友网 » C#/.NET应用程序编程开发中根据查询条件动态创建LINQ的Where查询表达式的实现方案

分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册