首页 > 代码库 > C# 表达式树

C# 表达式树

 为了演示,创建了一个类

    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# 表达式树