C# 表達式樹
阿新 • • 發佈:2017-06-08
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沒有辦法滿足我們的要求,所以我們重寫
publicstatic 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# 表達式樹