У меня есть выражение в формате Expression<Func<T, T2, bool>>
то, что я должен преобразовать в выражение на формате Expression<Func<T2, bool>>
путем замены T в первом выражении с постоянной величиной.
Мне нужно это для пребывания как выражение, таким образом, я не могу только Вызвать выражение с константой как первый параметр.
Я посмотрел на другие вопросы здесь о деревьях выражений, но я не могу действительно найти решение своей проблемы. Я подозреваю, что должен обойти дерево выражений, чтобы представить константу и удалить один параметр, но я даже не знаю, где запустить в данный момент.:(
Вы можете использовать Expression.Invoke для создания нового лямбда-выражения, которое вызывает другое:
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);
}