好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

实例如下:

?

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就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

dy("nrwz");

查看更多关于浅谈c#表达式树Expression简单类型比较demo的详细内容...

  阅读:59次