Ejemplo n.º 1
0
        /// <summary>
        /// Appends the filter connector to query.
        /// </summary>
        /// <param name="sb">The string builder instance.</param>
        /// <param name="filterConnector">The filter connector.</param>
        private void AppendFilterConnector(StringBuilder sb, FilterConnector filterConnector)
        {
            if (string.IsNullOrWhiteSpace(sb.ToString()))
            {
                return;
            }

            string connector = filterConnector == FilterConnector.And
                ? FilterConstants.And
                : FilterConstants.Or;

            sb.Append(connector);
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DataFilter" /> class.
 /// </summary>
 /// <param name="connector">The filter connector.</param>
 public DataFilter(FilterConnector connector)
 {
     Where     = new List <FilterItem>();
     Inner     = new List <DataFilter>();
     Connector = connector;
 }
Ejemplo n.º 3
0
        /// <summary>
        /// Creates the query expression.
        /// </summary>
        /// <param name="filterItem">The filter item.</param>
        /// <param name="filterConnector">The filter connector.</param>
        /// <returns>Generated query expression</returns>
        private string CreateQueryExpression(FilterItem filterItem, FilterConnector filterConnector)
        {
            var sb           = new StringBuilder();
            var propertyName = filterItem.Field;

            var property = GetAndValidateProperty(propertyName);

            var parameterNr = filterParameters.Count;
            var value       = GetValue(filterItem, property);

            filterParameters.Add(value);
            AppendFilterConnector(sb, filterConnector);

            string query;

            switch (filterItem.Operation)
            {
            case FilterOperation.Contains:
                query = string.Format(FilterConstants.Contains, propertyName, parameterNr);
                break;

            case FilterOperation.NotContains:
                query = string.Format(FilterConstants.NotContains, propertyName, parameterNr);
                break;

            case FilterOperation.StartsWith:
                query = string.Format(FilterConstants.StartsWith, propertyName, parameterNr);
                break;

            case FilterOperation.EndsWith:
                query = string.Format(FilterConstants.EndsWith, propertyName, parameterNr);
                break;

            case FilterOperation.Equal:
                if (value == null)
                {
                    query = string.Format(FilterConstants.EqualNull, propertyName);
                    break;
                }
                query = string.Format(FilterConstants.Equal, propertyName, parameterNr);
                break;

            case FilterOperation.NotEqual:
                if (value == null)
                {
                    query = string.Format(FilterConstants.NotEqualNull, propertyName);
                    break;
                }
                query = string.Format(FilterConstants.NotEqual, propertyName, parameterNr);
                break;

            case FilterOperation.Greater:
                query = string.Format(FilterConstants.Greater, propertyName, parameterNr);
                break;

            case FilterOperation.GreaterOrEqual:
                query = string.Format(FilterConstants.GreaterOrEqual, propertyName, parameterNr);
                break;

            case FilterOperation.Less:
                query = string.Format(FilterConstants.Less, propertyName, parameterNr);
                break;

            case FilterOperation.LessOrEqual:
                query = string.Format(FilterConstants.LessOrEqual, propertyName, parameterNr);
                break;

            default:
                throw new InvalidOperationException(string.Format("Unknown filter operation: {0}!", filterItem.Operation));
            }

            sb.Append(query);
            return(sb.ToString());
        }
Ejemplo n.º 4
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DataFilter" /> class.
 /// </summary>
 /// <param name="connector">The filter connector.</param>
 public DataFilter(FilterConnector connector)
 {
     Where = new List<FilterItem>();
     Inner = new List<DataFilter>();
     Connector = connector;
 }