Esempio n. 1
0
        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);
        }