浅谈c#表达式树Expression简单类型比较demo
作者:jingxian 发布时间:2023-07-20 06:24:01
标签:expression,表达式树,c#
实例如下:
using System;
using System.Linq.Expressions;
class DynamicPredicate
{
public static Expression<Func<T, T, bool>> Generate<T>(string op)
{
ParameterExpression x = Expression.Parameter(typeof(T), "x");
ParameterExpression y = Expression.Parameter(typeof(T), "y");
return Expression.Lambda<Func<T, T, bool>>
(
(op.Equals(">")) ? Expression.GreaterThan(x, y) :
(op.Equals("<")) ? Expression.LessThan(x, y) :
(op.Equals(">=")) ? Expression.GreaterThanOrEqual(x, y) :
(op.Equals("<=")) ? Expression.LessThanOrEqual(x, y) :
(op.Equals("!=")) ? Expression.NotEqual(x, y) :
Expression.Equal(x, y),
x,
y
);
}
}
static void Main()
{
string op = ">=";
var integerPredicate = DynamicPredicate.Generate<int>(op).Compile();
var floatPredicate = DynamicPredicate.Generate<float>(op).Compile();
int iA = 12, iB = 4;
Console.WriteLine("{0} {1} {2} : {3}",
iA, op, iB, integerPredicate(iA, iB));
float fA = 867.0f, fB = 867.0f;
Console.WriteLine("{0} {1} {2} : {3}",
fA, op, fB, floatPredicate(fA, fB));
Console.WriteLine("{0} {1} {2} : {3}",
fA, ">", fB, DynamicPredicate.Generate<float>(">").Compile()(fA, fB));
Console.ReadLine();
}
0
投稿
猜你喜欢
- Java中的动态和静态编译实例详解首先,我们来说说动态和静态编译的问题。 Q: java和javascript有什么
- 在java中类之间也是有着继承关系的,就我们之前有提到不少父类与子类的一些问题。 讲的以子类的调用为主,那么有小伙伴知道父类的调用方法吗?这
- 引言在项目中,时间的使用必不可少,而java 8之前的时间api Date和Calander等在使用上存在着很多问题,于是,jdk1.8引进
- 目录int和Integer的区别及自动装箱和自动拆箱Integer和int的对比,如下所示:自动装箱和自动拆箱:Integer的自动拆装箱的
- struts2可以非常简单地使用FreeMarker模板作为视图技术,对于传统的jsp页面而言,FreeMarker是一个绝佳的替代方案。除
- Synchronized实现可见性原理可见性要实现共享变量的可见性,必须保证两点:线程修改后的共享变量值能够及时从工作内存刷新到主内存中其他
- 1、概念:MyBatis中的延迟加载,也称为懒加载,是指在进行表的关联查询时,按照设置延迟规则推迟对关联对象的select查询。例如在进行一
- 添加Hibernate配置文件提示 解压hibernate.jar包 在org\hibernate目录下找到hibernate-config
- Wrapper条件构造器updateForSet更新官方文档:https://baomidou.gitee.io/mybatis-plus-
- 顺序结构顺序结构就是按照代码从上往下执行,我们运行的程序就是从上往下的顺序结构,当遇到方法的时候,才去执行方法。例如:System.out.
- 使用Java的NIO写的一个小的聊天系统,供大家参考,具体内容如下一、服务端/** * 群聊的服端 * * @author :breakpo
- 这篇文章主要介绍了springboot跨域CORS处理代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
- 一、项目搭建1、新建模块2、导入依赖 :将不相关的依赖删掉<!-- <de
- 如今,互联网项目对于安全的要求越来越严格,这就是对后端开发提出了更多的要求,目前比较成熟的几种大家比较熟悉的模式,像RBAC 基于角色权限的
- 使用命令行的方式管理服务器镜像及容器是运维人员最常用的方式,但是有的时候我们不得不远程操作docker或者是面向对docker并不熟悉的技术
- Android 应用坐标系详解:
- 背景数据之间两两趋势比较在数据分析应用中是非常常见的应用场景,如下所示:模拟考批次班级学生语文数学英语202302三年一班张小明130145
- springboot用以进行web项目开发的便捷性,本文不再赘述,主要是想将工作中基于springboot与gradle的多模块项目的构建经
- 批量添加一对多中间表建立中间表A,一个id对应多个lid;传入两条参数long id;//单个数值List lid;//集合数值dao层语句
- GZip是常用的无损压缩算法实现,在Linux中较为常见,像我们在Linux安装软件时,基本都是.tar.gz格式。.tar.gz格式文