private static Expression <Func <TEntity, bool> > Compose <TEntity>( Expression <Func <TEntity, bool> > first, Expression <Func <TEntity, bool> > second, Func <Expression, Expression, BinaryExpression> mergeFunc) { var secondBody = ParameterRebinder.Execute(first.Parameters.First(), second.Body); var resultExpression = Expression.Lambda <Func <TEntity, bool> >(mergeFunc(first.Body, secondBody), first.Parameters); return(resultExpression); }