internal static Expression <Func <T, bool> > Or <T>(Expression <Func <T, bool> > e1, Expression <Func <T, bool> > e2) { Expression <Func <T, bool> > expression = null; if (e1 == null) { expression = e2; } else if (e2 == null) { expression = e1; } else { var visiteur = new ParameterRebinder(e1.Parameters[0]); e2 = (Expression <Func <T, bool> >)visiteur.Visit(e2); var body = Expression.Or(e1.Body, e2.Body); expression = Expression.Lambda <Func <T, bool> >(body, e1.Parameters[0]); } return(expression); }