Exemplo n.º 1
0
        public override Expression <Func <T, bool> > ToExpression()
        {
            var leftExpression = _left.ToExpression();
            var paramExpr      = Expression.Parameter(typeof(T));
            var exprBody       = Expression.Not(leftExpression.Body);

            exprBody = (UnaryExpression) new ParameterReplacer(paramExpr).Visit(exprBody);
            var finalExpr = Expression.Lambda <Func <T, bool> >(exprBody, paramExpr);

            return(finalExpr);
        }
Exemplo n.º 2
0
        public override Expression <Func <T, bool> > ToExpression()
        {
            var leftExpression       = _left.ToExpression();
            var rightExpression      = _right.ToExpression();
            var paramExpr            = Expression.Parameter(typeof(T));
            var exprBody             = Expression.OrElse(leftExpression.Body, rightExpression.Body);
            var notBothSpecification = (_left.And(_right).Not());

            exprBody = Expression.AndAlso(exprBody, notBothSpecification.ToExpression().Body);
            exprBody = (BinaryExpression) new ParameterReplacer(paramExpr).Visit(exprBody);
            var finalExpr = Expression.Lambda <Func <T, bool> >(exprBody, paramExpr);

            return(finalExpr);
        }