### 常用的Expression調用形式

`ConstantExpression exp1 = Expression.Constant(1);構建常量表達式（還可以加類型）BinaryExpression exp12 = Expression.Add(exp1, exp2);構建二元加法表達式，參數為左右兩個需要相加的常量表達式或者變量ParameterExpression expA = Expression.Parameter(typeof(double), "a");構建參數-------------------------------------------------------------ParameterExpression expA = Expression.Parameter(typeof(double), "a"); //參數aMethodCallExpression expCall = Expression.Call(null,     typeof(Math).GetMethod("Sin", BindingFlags.Static | BindingFlags.Public),     expA); //Math.Sin(a)構建方法調用表達式（表示一次方法調用）---------------------------------------------------LambdaExpression exp = Expression.Lambda(expCall, expA); //構建lambda表達式（由表達式體和參數構成這個表達式體表示為一個方法調用表達式）---------------------------------------------------Expression<Func<double, double>> exp = a => Math.Sin(a);構建強類型的表達式樹(表達式樹字面量)----------------------------------------------------------UnaryExpression negate= Expression.Negate(left);//構建一元-表達式如：-a-----------------------------------------------------------------------ConstantExpression strin=   Expression.Constant("hello",typeof(string));NewExpression negate = Expression.New(typeof(StringBuilder).GetConstructor(new Type[] { typeof(String) }), strin);//構造new StringBuilder("hello")-----------------------------------------------------------------------ParameterExpression a = Expression.Parameter(typeof(int), "a");            ParameterExpression b= Expression.Parameter(typeof(int), "b");            ParameterExpression i= Expression.Parameter(typeof(int), "i");            BinaryExpression add = Expression.Add(a,b);            ConstantExpression s=Expression.Constant(1);            BinaryExpression substract = Expression.Subtract(i,s);            NewArrayExpression arrayint= Expression.NewArrayInit(typeof(int), a, b, add);            IndexExpression arracc= Expression.ArrayAccess(arrayint, substract);            Console.WriteLine(arracc.ToString());//new [] {a, b, (a + b)}[(i - 1)]數組訪問--------------------------------------------------------------------------MemberExpression mem=Expression.Property(exppro, property)//創建類型的屬性表達式--------------------------------------Expression.Equal(left, right)//二元=表達式----------------------------------Expression.GreaterThan(left, right)//二元>表達式----------------------------------Expression.GreaterThanOrEqual(left, right)//>=-------------------------------Expression.LessThan(left, right)//<---------------------------------Expression.LessThanOrEqual(left,right)/<=--------------------------------------return Expression.Call(left, typeof (string).GetMethod("Contains"), right)//like 字符串中包含right表達式代表的字符串---------------------------------------------- MethodCallExpression resultExp =                                    Expression.Call(                                        typeof (Enumerable),                                        "Contains",                                        new[] {left.Type},                                        right,                                        left)//構造in 比如： c=>new[] {"nn","mm"}.contains(c.name)--------------------------------------------Expression.NotEqual(left, right)//!=-------------------------------------------Expression.Call(left, typeof (string).GetMethod("StartsWith", new[] {typeof (string)}), right)//left以right字符串開始------------------------------------Expression.Call(left, typeof (string).GetMethod("EndsWith", new[] {typeof (string)}), right)//left以right字符串結尾---------------------------------------Expression.AndAlso(left, expression)//and 表達式&&-----------------------------------------Expression.OrElse(left, orGroupByExpAnd)//or表達式||`