我有一个格式为的表达式Expression<Func<T, T2, bool>>
我需要将其转换为以下格式的表达式Expression<Func<T2, bool>>
将第一个表达式中的 T 替换为常量值。
我需要将其保留为表达式,这样我就不能仅使用常量作为第一个参数来调用表达式。
我在这里查看了有关表达式树的其他问题,但我无法真正找到解决我的问题的方法。我怀疑我必须遍历表达式树来引入常量并删除一个参数,但我现在甚至不知道从哪里开始。 :(
您可以使用表达式.调用 http://msdn.microsoft.com/en-us/library/bb355170.aspx创建一个新的 lambda 表达式来调用另一个表达式:
static Expression<Func<T2, bool>> PartialApply<T, T2>(Expression<Func<T, T2, bool>> expr, T c)
{
var param = Expression.Parameter(typeof(T2), null);
return Expression.Lambda<Func<T2, bool>>(
Expression.Invoke(expr, Expression.Constant(c), param),
param);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)