【发布时间】:2011-08-28 11:23:28
【问题描述】:
我正在学习 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)}
感谢您对这个话题有所了解。
【问题讨论】: