Деревья локальных переменных и выражений

Я изучаю деревья выражений на 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)}

Спасибо, что пролили свет на эту тему.

25
задан yonexbat 28 August 2011 в 11:23
поделиться