通过为T引入一个常量,将表达式<Func >转换为Expression <Func >
我有一个Expression<Func>
格式的Expression<Func>
,我需要通过将第一个表达式中的T替换为Expression<Func>
的格式转换为表达式恒定价值。
我需要这个作为表达式保留,所以我不能只用一个常量作为第一个参数来调用表达式。
我已经看过这里有关表达树的其他问题,但我无法找到解决问题的方法。 我怀疑我必须走表达式树来引入常量并删除一个参数,但我甚至不知道从哪里开始。 🙁
您可以使用Expression.Invoke创建一个调用另一个的新lambda表达式:
static Expression> PartialApply(Expression> expr, T c) { var param = Expression.Parameter(typeof(T2), null); return Expression.Lambda>( Expression.Invoke(expr, Expression.Constant(c), param), param); }