Я изучаю деревья выражений в C #.
Теперь я застрял на некоторое время:
string filterString = "ruby";
Expression<Func<string, bool>> expression = x => x == filterString;
Как я могу построить это выражение по коду?Там нет образца, как захватить локальную переменную.Это просто:
Expression<Func<string, bool>> expression = x => x == "ruby";
Это будет:
ParameterExpression stringParam = Expression.Parameter(typeof(string), "x");
Expression constant = Expression.Constant("ruby");
BinaryExpression equals = Expression.Equal(stringParam, constant);
Expression<Func<string, bool>> lambda1 =
Expression.Lambda<Func<string, bool>>(
equals,
new ParameterExpression[] { stringParam });
Отладчик печатает следующее для (x => x == filterString):
{x => (x == value (Predicate.Program + <> c__DisplayClass3) .filterString)}
Спасибо, что пролили свет на эту тему.