zoukankan      html  css  js  c++  java
  • 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();
            }

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

      代码地址

    Hold on, everything is possible.
  • 相关阅读:
    【C++】基础及引用
    gradle打包分编译环境
    gradle
    MediaPlayer滑动不准的问题
    python初步入门
    音频播放服务
    《深入理解Android2》读书笔记(二)
    缓存(LruCache)机制
    handler机制
    监听网络状态
  • 原文地址:https://www.cnblogs.com/student-note/p/6961973.html
Copyright © 2011-2022 走看看