예제 #1
0
        protected override Expression VisitConstant(ConstantExpression c)
        {
            var q = c.Value as IQueryable;

            if (q != null)
            {
            }
            else if (c.Value == null || string.Empty.Equals(c.Value))
            {
                _sb.Append(_dnFilter ? "" : "*");
            }
            else if (c.Value is Expression)
            {
                Visit(c.Value as Expression);
            }
            else if (_dnFilter)
            {
                _sb.Append(_shouldCleanFilter ? (c.Value as string).CleanFilterValue() : (c.Value as string));
            }
            else if (c.Type == typeof(PartialResultProcessing))
            {
                _asyncProcessing = (PartialResultProcessing)c.Value;
            }
            else if (_currentProperty != null)
            {
                var str = _currentProperty.FormatValueToFilter(c.Value);

                if (str.IsNullOrEmpty())
                {
                    throw new FilterException("Cannot use white spaces for a value in a filter.");
                }

                _sb.Append(str);
            }
            else if (!_binaryExpression && false.Equals(c.Value))
            {
                _falseEncountered = true;
            }
            return(c);
        }