由于业务需要,在网上搜索了相关内容,整理了如下帮助类:

    /// <summary>/// 动态生成比较lamda表达式帮助类/// </summary>public class LamdaHelper{/// <summary>/// 创建lambda表达式:p=>true/// </summary>/// <typeparam name="T">对象名称(类名)</typeparam>/// <returns></returns>public static Expression<Func<T, bool>> True<T>(){return p => true;}/// <summary>/// 创建lambda表达式:p=>false/// </summary>/// <typeparam name="T">对象名称(类名)</typeparam>/// <returns></returns>public static Expression<Func<T, bool>> False<T>(){return p => false;}/// <summary>/// 创建lambda表达式:p=>p.propertyName/// </summary>/// <typeparam name="T">对象名称(类名)</typeparam>/// <typeparam name="TKey">参数类型</typeparam>/// <param name="propertyName">字段名称(数据库中字段名称)</param>/// <returns></returns>public static Expression<Func<T, TKey>> GetOrderExpression<T, TKey>(string propertyName){ParameterExpression parameter = Expression.Parameter(typeof(T), "p");return Expression.Lambda<Func<T, TKey>>(Expression.Property(parameter, propertyName), parameter);}/// <summary>/// 创建lambda表达式:p=>p.propertyName == propertyValue/// </summary>/// <typeparam name="T">对象名称(类名)</typeparam>/// <typeparam name="S">参数类型</typeparam>/// <param name="propertyName">字段名称(数据库中字段名称)</param>/// <param name="propertyValue">数据值</param>/// <returns></returns>public static Expression<Func<T, bool>> CreateEqual<T, S>(string propertyName, S propertyValue){ParameterExpression parameter = Expression.Parameter(typeof(T), "p");//创建参数pMemberExpression member = Expression.PropertyOrField(parameter, propertyName);ConstantExpression constant = Expression.Constant(propertyValue, typeof(S));//创建常数return Expression.Lambda<Func<T, bool>>(Expression.Equal(member, constant), parameter);}/// <summary>/// 创建lambda表达式:p=>p.propertyName != propertyValue/// </summary>/// <typeparam name="T">对象名称(类名)</typeparam>/// <typeparam name="S">参数类型</typeparam>/// <param name="propertyName">字段名称(数据库中字段名称)</param>/// <param name="propertyValue">数据值</param>/// <returns></returns>public static Expression<Func<T, bool>> CreateNotEqual<T, S>(string propertyName, S propertyValue){ParameterExpression parameter = Expression.Parameter(typeof(T), "p");//创建参数pMemberExpression member = Expression.PropertyOrField(parameter, propertyName);ConstantExpression constant = Expression.Constant(propertyValue, typeof(S));//创建常数return Expression.Lambda<Func<T, bool>>(Expression.NotEqual(member, constant), parameter);}/// <summary>/// 创建lambda表达式:p=>p.propertyName > propertyValue/// </summary>/// <typeparam name="T">对象名称(类名)</typeparam>/// <typeparam name="S">参数类型</typeparam>/// <param name="propertyName">字段名称(数据库中字段名称)</param>/// <param name="propertyValue">数据值</param>/// <returns></returns>public static Expression<Func<T, bool>> CreateGreaterThan<T, S>(string propertyName, S propertyValue){ParameterExpression parameter = Expression.Parameter(typeof(T), "p");//创建参数pMemberExpression member = Expression.PropertyOrField(parameter, propertyName);ConstantExpression constant = Expression.Constant(propertyValue, typeof(S));//创建常数return Expression.Lambda<Func<T, bool>>(Expression.GreaterThan(member, constant), parameter);}/// <summary>/// 创建lambda表达式:p=>  propertyValue > p.propertyName /// </summary>/// <typeparam name="T">对象名称(类名)</typeparam>/// <typeparam name="S">参数类型</typeparam>/// <param name="propertyName">字段名称(数据库中字段名称)</param>/// <param name="propertyValue">数据值</param>/// <returns></returns>public static Expression<Func<T, bool>> CreateLessThan<T, S>(string propertyName, S propertyValue){ParameterExpression parameter = Expression.Parameter(typeof(T), "p");//创建参数pMemberExpression member = Expression.PropertyOrField(parameter, propertyName);ConstantExpression constant = Expression.Constant(propertyValue, typeof(S));//创建常数return Expression.Lambda<Func<T, bool>>(Expression.LessThan(member, constant), parameter);}/// <summary>/// 创建lambda表达式:p=>p.propertyName >= propertyValue/// </summary>/// <typeparam name="T">对象名称(类名)</typeparam>/// <typeparam name="S">参数类型</typeparam>/// <param name="propertyName">字段名称(数据库中字段名称)</param>/// <param name="propertyValue">数据值</param>/// <returns></returns>public static Expression<Func<T, bool>> CreateGreaterThanOrEqual<T, S>(string propertyName, S propertyValue){ParameterExpression parameter = Expression.Parameter(typeof(T), "p");//创建参数pMemberExpression member = Expression.PropertyOrField(parameter, propertyName);ConstantExpression constant = Expression.Constant(propertyValue, typeof(S));//创建常数return Expression.Lambda<Func<T, bool>>(Expression.GreaterThanOrEqual(member, constant), parameter);}/// <summary>/// 创建lambda表达式:p=>propertyValue >= p.propertyName /// </summary>/// <typeparam name="T">对象名称(类名)</typeparam>/// <typeparam name="S">参数类型</typeparam>/// <param name="propertyName">字段名称(数据库中字段名称)</param>/// <param name="propertyValue">数据值</param>/// <returns></returns>public static Expression<Func<T, bool>> CreateLessThanOrEqual<T, S>(string propertyName, S propertyValue){ParameterExpression parameter = Expression.Parameter(typeof(T), "p");//创建参数pMemberExpression member = Expression.PropertyOrField(parameter, propertyName);ConstantExpression constant = Expression.Constant(propertyValue, typeof(S));//创建常数return Expression.Lambda<Func<T, bool>>(Expression.LessThanOrEqual(member, constant), parameter);}/// <summary>/// 创建lambda表达式:p=>p.propertyName.Contains(propertyValue)/// </summary>/// <typeparam name="T">对象名称(类名)</typeparam>/// <param name="propertyName">字段名称(数据库中字段名称)</param>/// <param name="propertyValue">数据值</param>/// <returns></returns>public static Expression<Func<T, bool>> GetContains<T>(string propertyName, string propertyValue){ParameterExpression parameter = Expression.Parameter(typeof(T), "p");MemberExpression member = Expression.PropertyOrField(parameter, propertyName);MethodInfo method = typeof(string).GetMethod("Contains", new[] { typeof(string) });ConstantExpression constant = Expression.Constant(propertyValue, typeof(string));return Expression.Lambda<Func<T, bool>>(Expression.Call(member, method, constant), parameter);}/// <summary>/// 创建lambda表达式:!(p=>p.propertyName.Contains(propertyValue))/// </summary>/// <typeparam name="T">对象名称(类名)</typeparam>/// <param name="propertyName">字段名称(数据库中字段名称)</param>/// <param name="propertyValue">数据值</param>/// <returns></returns>public static Expression<Func<T, bool>> GetNotContains<T>(string propertyName, string propertyValue){ParameterExpression parameter = Expression.Parameter(typeof(T), "p");MemberExpression member = Expression.PropertyOrField(parameter, propertyName);MethodInfo method = typeof(string).GetMethod("Contains", new[] { typeof(string) });ConstantExpression constant = Expression.Constant(propertyValue, typeof(string));return Expression.Lambda<Func<T, bool>>(Expression.Not(Expression.Call(member, method, constant)), parameter);}}

c# -- 动态生成查询lamda表达式相关推荐

  1. 使用该JavaBean可以将数据在JSP页面中以表格的形式显示出来 并具有动态排序 动态生成查询 自动分页功能

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 使用该类 ...

  2. [.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用

    [.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用 本节导读:讨论了表达式树的定义和解析之后,我们知道了表达式树就是并非可执行代码,而是将表达式对象化后的数据结构.是 ...

  3. 使用sp_executesql存储过程执行动态SQL查询

    The sp_executesql stored procedure is used to execute dynamic SQL queries in SQL Server. A dynamic S ...

  4. C#表达式目录树系列之5 –动态创建查询表达式

    概要 在项目开发中,根据用户的需求,一般来是,我们的查询表达式是固定的,新的查询需求都要通过代码的修改来实现.而对于不确定的查询条件,固定查询表达式的方式显然是行不通的. 针对固定查询表达式存在的问题 ...

  5. 在jsp页面里动态生成EL表达式的key

    如图,页面中有n个商品列表需要加载,这个列表的名字分别是list1.list2-listn,总之不是写死的. 在Ctroller里面,可见参数名师动态生成的: @RequestMapping(meth ...

  6. 通过JS代码动态生成HTML表格(Table),Input框,Button按钮.并且通过Input框的值进行查询动态生成数据填写在指定的表格里

    本人公众号上线啦!!! 公众号与博客名一样:没有腹肌的程序猿 公众号文章类型:工作上所遇到的需求实现方案分享. 此外也会提供一些数据集供大家使用.(这个还在规划中,毕竟打工人时间挺紧的,哈哈哈哈) 到 ...

  7. 通过表单设计器动态生成数据库表以及动态查询的功能实现

    表单设计器动态生成数据库表以及动态查询的功能实现 前言 1. 功能实现 1.1 效果说明 1.2 功能流程图 1.3 具体后端实现 1.4 实现效果 2. 尾声 前言 前两天安排了作为Java小码农的 ...

  8. java工作笔记017---java8新特性_使用lamda表达式进行List分组_排序_去重_随时更新

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 这个电视购物项目后台采用java1.8编写,有些业务复杂的地方,使用lamda表达式可以简化开发 ...

  9. JPA 2.0 中的动态类型安全查询

    如何通过 Criteria API 构建动态查询并减少运行时失败 如果编译器能够对查询执行语法正确性检查,那么对于 Java 对象而言该查询就是类型安全的.Java™Persistence API ( ...

最新文章

  1. 开源项目贡献者_如何吸引新的贡献者加入您的开源项目
  2. Python基础教学系列— 基础语法
  3. ReactiveCocoa源码拆分解析(七)
  4. 都是套路:高并发系统的降级特技
  5. 一个产品留言统计查寻的分析比较
  6. web.config配置文件格式
  7. MyEclipse 2015 CI
  8. 【原】jQuery easyUI 快速搭建前端框架
  9. encodeURI和uncodeURIComponent的介绍
  10. java8新特性和汪文君Google Guava项目实战视频
  11. python概率分布拟合_用Python实现概率分布
  12. matlab读取txt数据文件
  13. CentOS7设置GRUB系统内核开机选单
  14. Ubuntu 20安装微信3.0版本的方法 v2022
  15. SDK完整环境下载安装及ADB常用命令
  16. 通信业的双11来了!充话费、办宽带、买手机每年这时候最划算
  17. 设置CPU频率和CPU运行核心数
  18. errorCode 1045,state 28000: Access denied for user 'mysql'@'localhost' (using password: YES)
  19. Java实现 蓝桥杯VIP 基础练习 分解质因数
  20. 我的Android进阶之旅------经典的大客推荐(排名不分先后)!!

热门文章

  1. linux module 目录,/sys/module/ 模块信息目录与/proc/modules文件
  2. 电商促销海报设计技巧!
  3. 中秋节PSD分层模板|电商营销借势促销,快快收藏!
  4. 同等学力计算机综合难吗,计算机在职研究生考试难度大吗?这种方式通过率高...
  5. 机器人瓦力机械舞_25个与机器人有关的“前卫”知识,你知道几个?
  6. python作用域顺序排列_详解Python函数作用域的LEGB顺序
  7. Intel 中断和异常处理 - 目录
  8. Linux内核深入理解系统调用(2):vsyscall 和 vDSO 以及程序是如何运行的(execve)
  9. netdev FAQ
  10. 【编译制导指令】#pragma pack - 字节数基准对齐