首页 / C#开发 / 正文

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

3281 1 2评论 发布于: 2019-08-30 读完约需3分钟

前言

在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应用程序编程开发中合并两个或者两个以上的字节数组(byte[])有哪些方法?

下一篇: C#/.NET应用程序编程开发中如何将两张或者多张图片合并成一张图片?

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

分享扩散:

发表评论

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

热门评论

a753318798 (2021-06-09 11:10)

很棒!
回复 赞(0)
  • 感谢支持~~~

    Rector · 2021-06-10 09:05 赞(0)

a753318798 (2021-06-09 11:10)

很棒!
回复 赞(0)