简单介绍c#表达式树Expression简单类型比较demo的示例代码


本文摘自PHP中文网,作者黄舟,侵删。

下面小编就为大家带来一篇浅谈c#表达式树Expression简单类型比较demo。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

实例如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

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的示例代码的详细内容!

相关阅读 >>

几个优秀的java和c#代码转换工具

详细介绍c#数学运算表达式解释器的示例代码

关于c#中字典dictionary的顺序及倒序详解

不用ide也能写出c#的hello world详解(图)

c# 7.0 语言新特性

原来斐波拉契数列还有这种写法,你知道吗?

详解c# 控制台倒计时

c# system.drawing.region类的方法使用(图解)

简单介绍c#中的委托,事件与异步的用法

c#网络编程的图文代码详解

更多相关阅读请进入《Expression》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...