Как работает PredicateBuilder

C #in a Nutshell имеет бесплатный класс PredicateBuilder, который создает предикаты LINQ по частям, доступные здесь . Вот выдержка из метода, который добавляет новое выражение к предикату. Может ли кто-нибудь объяснить это? (Я видел этот вопрос , мне не нужен такой общий ответ, как здесь. Я ищу конкретное объяснение того, как Expression.Invoke и Expression.Lambda строят новое выражение ).

public static Expression> And (this Expression> expr1,
                                                     Expression> expr2)
{
    var invokedExpr = Expression.Invoke (expr2, expr1.Parameters.Cast ());
    return Expression.Lambda>
        (Expression.AndAlso (expr1.Body, invokedExpr), expr1.Parameters);
}

32
задан Community 23 May 2017 в 10:31
поделиться