软件编程
位置:首页>> 软件编程>> C#编程>> 浅谈c#表达式树Expression简单类型比较demo

浅谈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
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com