浅谈c#表达式树Expression简单类型比较demo

作者:jingxian 时间:2023-07-20 06:24:01 

实例如下:


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();
 }
标签:expression,表达式树,c#
0
投稿

猜你喜欢

  • JAVA 中Spring的@Async用法总结

    2023-11-28 16:35:58
  • Java使用OpenCV3.2实现视频读取与播放

    2023-11-23 06:14:02
  • Java 集合概览(小结)

    2023-11-08 02:50:37
  • Android 图片缩放与旋转的实现详解

    2023-03-10 10:57:41
  • 如何处理maven仓库中后缀LastUpdated文件

    2022-01-21 22:15:44
  • Java判断两个日期相差天数的方法

    2021-11-29 05:55:07
  • Android编程使用android-support-design实现MD风格对话框功能示例

    2022-05-19 03:46:39
  • Java8 如何正确高效的使用并行流

    2021-06-01 20:29:19
  • 在Winform和WPF中注册全局快捷键实现思路及代码

    2023-03-13 23:00:25
  • Android权限询问的实例详解

    2022-10-03 21:28:51
  • 浅谈Spring中单例Bean是线程安全的吗

    2023-07-12 23:42:21
  • Android营造雪花和雨滴浪漫效果

    2022-11-14 22:47:40
  • Java 实战范例之员工管理系统的实现

    2023-03-31 08:09:33
  • SpringMVC接收复杂集合对象(参数)代码示例

    2023-01-29 18:33:51
  • 详解C#中通过委托来实现回调函数功能的方法

    2021-08-14 05:02:58
  • datatable去掉重复行的方法

    2023-09-02 19:59:41
  • 浅谈Java slf4j日志简单理解

    2021-07-07 15:49:15
  • Spring Cloud Gateway网关XSS过滤方式

    2021-08-07 13:16:53
  • Java SpringBoot集成ChatGPT实现AI聊天

    2021-08-21 21:55:23
  • java 示例讲解循环语句的使用

    2021-12-17 06:23:01
  • asp之家 软件编程 m.aspxhome.com