给出如下表达式:
Int32 five = 5;
Express(num => num == five);
其中Express
类似于
void Express(Expression<Predicate<Int32>> predicatesGonnaPredicate)
{
....
}
在解析上面的表达式时,我如何以编程方式确定五个已被关闭?我可以想到很多黑客的方法,但是必须有一些正确的方法来识别它?
答案 0 :(得分:1)
如果要将不依赖于lambda参数的所有子表达式替换为其值,可以使用Matt Warren的文章Building an IQueryable Provider - Part III中的PartialEval
。
例如,在您的情况下,结果将是表达式num => num == 5
。