C#使用比较操作符(!=、<、>、<=、>=)的字符串构造Lambda表达式树,并生成委托执行
来源:互联网 发布:阿里云邮箱登陆入口 编辑:程序博客网 时间:2024/05/11 05:20
下面是一个把C#使用比较操作符的字符串作为参数来构造一个委托
比如我告诉一个方法,我现在要比较x,y两个值,但具体是大于,还是小于,还是其它,我用操作符的字符串来当成参数,比如传递一个">"字符串给函数,我是要比较x是否大于y,然后返回一个bool型的结果
实现代码如下:
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));}
0 0
- C#使用比较操作符(!=、<、>、<=、>=)的字符串构造Lambda表达式树,并生成委托执行
- C# 新委托使用方法 Lambda表达式,运算符 =>
- C# => Lambda表达式
- C# 委托-lambda表达式
- C#教程:作为委托的Lambda表达式
- 委托使用lambda表达式
- Lambda表达式委托使用
- C# => Lambda表达式理解
- C# => Lambda表达式理解
- C# => Lambda表达式理解
- C# Action 委托 + lambda 表达式
- c#委托与Lambda表达式
- c# 委托、事件、lambda表达式
- C#委托/Lambda表达式/事件
- C#委托,lambda表达式联系,
- C#的静态构造函数(主要说的是编译器为Lambda表达式生成的类)
- C#的委托,匿名方法和Lambda表达式
- C#中的lambda表达式与委托的关系
- warning C4996: “fopen”被声明为否决的
- 汇编语言转移指令规则汇总
- 数据结构上机测试4.1:二叉树的遍历与应用1
- SVN 版本恢复命令行操作
- LeetCode 4 — Median of Two Sorted Arrays (C++ Java Python)
- C#使用比较操作符(!=、<、>、<=、>=)的字符串构造Lambda表达式树,并生成委托执行
- JQuery 选择器及radio,checkbox,select取值
- js 表格排序(编辑+拖拽+缩放)
- 美国Ivanpah太阳能发电站:飞经这里的鸟都被烧焦了
- TEST
- Dubbo基本原理机制
- Spring的IoC/DI的理解
- ThreadLocal的本质和应用分析
- js拖拽单元格内容