我需要创建一个动态LINQ表达式,我开始使用很多示例。我测试了一些和一些工作,有些则没有。在这种情况下,我想建立这样一个方法:动态Linq表达式返回值
public bool Check(int intvar)
{
if (i > 2)
return true;
else
return false;
}
现在我已经写了下面的:
LabelTarget returnTarget = Expression.Label("label");
ParameterExpression para = Expression.Parameter(typeof(int), "intvalue");
Expression test = Expression.GreaterThan(para, Expression.Constant(5));
Expression iftrue = Expression.Return(returnTarget, Expression.Constant(true));
Expression iffalse = Expression.Return(returnTarget, Expression.Constant(false));
Expression.IfThenElse(test, iftrue, iffalse);
this.TheExpression = Expression.IfThenElse(test, iftrue, iffalse);
Expression.Lambda<Action<int>>(
this.TheExpression,
new ParameterExpression[] { para }
).Compile()(5);
现在抛出InvalidOperationException
:
不能跳转到标签“标签”
什么是错的?我只需要一个真或假的回报。
你能告诉我们一点关于你想达到什么目的?例如,为什么你需要动态创建这个表达式......为什么你需要使用标签,如果\ else当你可以写: public bool Check(int intvar) { return i> 2; } –