首页 > 编程 > C# > 正文

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

2020-01-24 00:45:48
字体:
来源:转载
供稿:网友

实例如下:

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();  }

以上这篇浅谈c#表达式树Expression简单类型比较demo就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表