我需要创建一个动态 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
:
无法跳转到标签“标签”`
怎么了 ?我只需要返回真或假。