【发布时间】:2013-04-17 17:49:10
【问题描述】:
我做的表达式树工作不足以让这个工作......
基本上我要创建的是m.MyProperty == 1,用于采用Func<T, bool> 的方法。
我已经有一个MemberExpression。我尝试了各种方法,但总是遇到不同的错误。
我目前有这样的东西(不起作用):
object const = 1;
var equalExpression = Expression.Equal( memberExpression, Expression.Constant( const ) );
var compiled = Expression.Lambda<Func<T, bool>>( equalExpression, Expression.Parameter( typeof( T ) ).Compile();
这给了我一个例外:
System.InvalidOperationException:从范围“”引用的“MyType”类型的变量“m”,但未定义
我已经尝试重新设计其中的几个不同部分,但没有提出任何可行的方法。
const 是一个可以是任何类型的对象,但应该与MemberExpression 的类型相匹配。
解决方案:
object c = 1;
var parameterExpression = (ParameterExpression)memberExpression.Expression;
var equalExpression = Expression.Equal(memberExpression, Expression.Constant(c));
var compiled = Expression.Lambda<Func<T, bool>>(equalExpression, parameterExpression).Compile();
【问题讨论】:
标签: c# .net lambda expression expression-trees