|
什么是表達(dá)式樹?
表達(dá)式樹又稱為表達(dá)式目錄樹,以數(shù)據(jù)形式表示語言級代碼。所有的數(shù)據(jù)都存儲在樹結(jié)構(gòu)中,每個(gè)結(jié)點(diǎn)表示一個(gè)表達(dá)式(Expression)。要想手動(dòng)生成表達(dá)式樹我們需要引用System.Linq.Expressions 命名空間,最重要的一個(gè)類是Expression,它是所有表達(dá)式的基類。例如:
1:參數(shù)表達(dá)式:ParameterExpression,就是一個(gè)方法中的參數(shù),例如 search(string key),key可以看成是一個(gè)參數(shù)表達(dá)式。
2:二元表達(dá)式:BinaryExpression,例如a+b等。
3:方法調(diào)用表達(dá)式:MethodCallExpression,例如:自定義LINQ提供程序中實(shí)現(xiàn)orderby 的操作:
MethodCallExpression orderByCallExpression = Expression.Call(typeof(Queryable),
"OrderBy",
new Type[] { queryableData.ElementType, queryableData.ElementType
},
whereCallExpression,
Expression.Lambda<Func<string, string>>(pe, new ParameterExpression
[] { pe }));
NET技術(shù):表達(dá)式樹和泛型委托,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。