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)); }
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)); }