Преобразуйте Выражение <Func <T, T2, bool>> к Выражению <Func <T2, bool>> путем представления константы для T

У меня есть выражение в формате Expression<Func<T, T2, bool>> то, что я должен преобразовать в выражение на формате Expression<Func<T2, bool>> путем замены T в первом выражении с постоянной величиной.

Мне нужно это для пребывания как выражение, таким образом, я не могу только Вызвать выражение с константой как первый параметр.

Я посмотрел на другие вопросы здесь о деревьях выражений, но я не могу действительно найти решение своей проблемы. Я подозреваю, что должен обойти дерево выражений, чтобы представить константу и удалить один параметр, но я даже не знаю, где запустить в данный момент.:(

6
задан Kristoffer L 1 July 2010 в 12:49
поделиться

1 ответ

Вы можете использовать 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);
}
5
ответ дан 17 December 2019 в 04:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: