Exemplo n.º 1
0
        protected override Expression VisitBinary(BinaryExpression expression)
        {
            if (expression.Type == typeof(bool) && expression.NodeType == ExpressionType.NotEqual)
            {
                var binaryExpression = expression.As <BinaryExpression>();
                var locator          = _mapping.JsonLocator(binaryExpression.Left);
                if (binaryExpression.Right.NodeType == ExpressionType.Constant &&
                    binaryExpression.Right.As <ConstantExpression>().Value == null)
                {
                    var @where = new WhereFragment($"({locator}) IS NULL");
                    _callback(@where);
                    return(base.VisitBinary(expression));
                }
            }

            var parser = _supplementalParsers.OfType <IExpressionParser <BinaryExpression> >()?.FirstOrDefault(x => x.Matches(expression));

            if (parser != null)
            {
                var where = parser.Parse(_mapping, _serializer, expression);
                _callback(where);

                return(expression);
            }

            return(base.VisitBinary(expression));
        }
Exemplo n.º 2
0
        protected override Expression VisitBinary(BinaryExpression expression)
        {
            if (expression.Type == typeof(bool) && expression.NodeType == ExpressionType.NotEqual)
            {
                var binaryExpression = expression.As <BinaryExpression>();
                var locator          = _mapping.JsonLocator(binaryExpression.Left);
                if (binaryExpression.Right.NodeType == ExpressionType.Constant &&
                    binaryExpression.Right.As <ConstantExpression>().Value == null)
                {
                    var @where = new WhereFragment($"({locator}) IS NULL");
                    _callback(@where);
                }
            }

            return(base.VisitBinary(expression));
        }