1. 程式人生 > >C# 表達式樹

C# 表達式樹

constant from write default c# bool 表達 ret tar

 為了演示,創建了一個類

    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# 表達式樹