码迷,mamicode.com
首页 > Windows程序 > 详细

C# 表达式树

时间:2017-06-08 13:10:58      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:member   span   efault   ==   bool   nodetype   public   line   void   

 为了演示,创建了一个类

    public class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public string Address { get; set; }

    }

  我们来看表达式树究竟是个什么东西

技术分享

这个就是表达式树啦,可以看到它最重要的就是Body 在这里我们就可以找到我们写的表达式了

下面我们通过一个例子来看表达式树怎么用

  因为内置的ExpressionType没有办法满足我们的要求,所以我们重写

    public static class Ex
    {
        public static string TransfromNodeType(this ExpressionType ex)
        {
            switch (ex)
            {
                case ExpressionType.Add:
                    return "+";
                case ExpressionType.Equal:
                    return "=";
                case ExpressionType.Multiply:
                    return "*";
                case ExpressionType.AndAlso:
                    return "and";
                default :return "";
            }
        }
    }

  然后我们简单的调用一下

        static void Main(string[] args)
        {
            Expression<Func<Person, bool>> lamda = d => d.Name == "123123";
            var e = (BinaryExpression)lamda.Body;
            string s = ((MemberExpression)e.Left).Member.Name + "=" + ((ConstantExpression)e.Right).Value;
            Console.WriteLine(s);
           
            Console.Read();
        }

技术分享

  接下面我们写个复杂一点的

  代码地址

C# 表达式树

标签:member   span   efault   ==   bool   nodetype   public   line   void   

原文地址:http://www.cnblogs.com/student-note/p/6961973.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!