У меня есть два выражения (может быть константой или выражением свойства) leftExpr
и rightExpr
, и я хотел бы создать комбинированное выражение, которое больше, чем между результатами, например так:
Expression.Lambda<Func<object, bool>>(x => Expression.GreaterThan(leftExpr(x),rightExpr(x))
Это явно не работает, как правильно пойти? (Я новичок в деревьях выражений)
Код левого и правого выражений:
Expression leftExpr, rightExpr;
if (left_element.All(char.IsDigit))
{
leftExpr = Expression.Constant(int.Parse(left_element));
}
else
{
leftExpr = Expression.PropertyOrField(Expression.Parameter(t), left_element);
}
if (right_element.All(char.IsDigit))
{
rightExpr = Expression.Constant(int.Parse(right_element));
}
else
{
rightExpr = Expression.PropertyOrField(Expression.Parameter(t), right_element);
}
var result = Expression.GreaterThan(leftExpr, rightExpr)
? - person Hjalmar Z   schedule 12.08.2015if(condition);else{...}
? Почему бы просто не отменить условие:if(!condition){...}
? - person Koopakiller   schedule 12.08.2015if
. Очень странное форматирование, использовать{}
дляelse
, но не дляif
. - person Hjalmar Z   schedule 12.08.2015Expression.Lambda
неправильно, должно быть так:Expression.Lambda<Func<object, bool>>(Expression.GreaterThan(leftExpr,rightExpr), x)
гдеx
равноParamenterExpression
- person Grundy   schedule 12.08.2015