.NET表達式類型支持將調用表示爲由另一個表達式定義的函數,但是有沒有使用C#lambda表達式語法表達的方法?我可以生成一個表達式,編譯它並在另一個表達式中調用它,但是失去了被調用lambda表達式的「表達式」,並且調用表達式將只包含對匿名編譯函數的引用。如何使用C#lambda表達式語法調用另一個表達式?
也就是說,我想要做的是一樣的東西:
Expression<Func<int, int>> f = x => x + x;
Expression<Func<int, int>> g = x => 2 + f(x);
,但因爲它不是有效的直接調用的表達,我最接近的是:
Expression<Func<int, int>> f = x => x + x;
var f_ = f.Compile();
Expression<Func<int, int>> g = x => 2 + f_(x);
...這就失去了被調用函數f是一個表達式的事實。
是的,我發現Expression.Invoke和InvocationExpression,這是我知道它可以代表。我很驚訝,沒有辦法用lambda表達式語法來表達它。實際上,使用lambda語法無法創建的所有表達式類型究竟是什麼,大多數LINQ提供者是否支持它們? – SoftMemes
優秀的答案,謝謝! – SoftMemes