Tôi cần tạo biểu thức LINQ động mà tôi bắt đầu làm việc với nhiều ví dụ. Tôi đã thử nghiệm một số và một số công việc và một số không. Trong trường hợp này tôi muốn tạo ra một phương pháp mà trông giống như:Biểu thức LINQ động với giá trị trả về
public bool Check(int intvar)
{
if (i > 2)
return true;
else
return false;
}
Bây giờ tôi đã viết như sau:
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);
Bây giờ nó ném InvalidOperationException
:
Không thể nhảy đến nhãn "label" `
Điều gì là sai? Tôi chỉ cần trả lại đúng hoặc sai.
Bạn có thể cho chúng tôi biết thêm một chút về những gì bạn đang cố gắng để đạt được? Ví dụ: tại sao bạn cần phải tự động tạo biểu thức này ... và tại sao bạn cần sử dụng nhãn và nếu \ else khi bạn có thể viết: kiểm tra công khai bool (int intvar) { trả lại i> 2; } –