从表达式获取结果

LJW*_*LJW 7 c# lambda expression-trees

我在运行时创建了一个lambda表达式,想要评估它 - 我该怎么做?我只想自己运行表达式,而不是反对任何集合或其他值.

在这个阶段,一旦它被创建,我可以看到它是类型Expression<Func<bool>>,值为{() => "MyValue".StartsWith("MyV")}.

我想在那一点上我可以var result = Expression.Invoke(expr, null);反对它,我会得到我的布尔结果.但这只是返回一个InvocationExpression,在调试器中看起来像{Invoke(() => "MyValue".StartsWith("MyV"))}.

我很确定我很接近,但无法弄清楚如何得到我的结果!

谢谢.

And*_*are 15

尝试使用该Compile方法编译表达式,然后调用返回的委托:

using System;
using System.Linq.Expressions;

class Example
{
    static void Main()
    {
        Expression<Func<Boolean>> expression 
                = () => "MyValue".StartsWith("MyV");
        Func<Boolean> func = expression.Compile();
        Boolean result = func();
    }
}
Run Code Online (Sandbox Code Playgroud)