2
我想構建一個使用另一個表達式的表達式,並且這會給我一個不錯的ToString()
輸出。構建執行另一個表達式的表達式
與正常lambda表達式來表達,我想這樣做:
Func<string> extractFunc =() => "Marsh";
Func<bool> compareFunc =() => extractFunc() == "Mallow";
同樣的事情表達式:
Expression<Func<string>> extractExp =() => "Marsh";
Expression<Func<bool>> compareExp =() => extractExp.Compile()() == "Mallow";
執行compareExp.ToString()
給我下面的輸出:
() => (Invoke(value(MyClass+<>c__DisplayClassb).extractExp.Compile()) == "Mallow")
我想要的是類似的東西:
() => "March" == "Mallow"
我應該寫什麼而不是extractExp.Compile()()
?
(我可能會使用某種ExpressionVisitor
得到美麗的輸出。獎金,如果答案包括,但更重要的是如何合併兩個Expression
秒)
完美,謝謝! –