public PredicateBuilderConfiguration WithNullTextValues(PredicateDataType dataType, IEnumerable <string> values, bool caseSensitive = false)
        {
            NullValuesCaseSenstive = caseSensitive;
            NullTextValues         =
                values == null?
                Enumerable.Empty <string>() :
                    values.Select(x => caseSensitive ? x : x.ToLower()).ToList();

            return(this);
        }
        public PredicateBuilderConfiguration WithEmptyValues(PredicateDataType dataType, params object[] values)
        {
            if (dataType == PredicateDataType.Collection ||
                dataType == PredicateDataType.Unsupported)
            {
                throw new InvalidOperationException($"Cannot set empty values for {dataType} types");
            }

            values = (values ?? Enumerable.Empty <object>())
                     .Select(x => dataType == PredicateDataType.String ?
                             x?.ToString() : x)
                     .ToArray();

            if (emptyValues.ContainsKey(dataType))
            {
                emptyValues[dataType] = values;
            }
            else
            {
                emptyValues.Add(dataType, values);
            }

            return(this);
        }
 public IEnumerable <object> GetEmptyValues(PredicateDataType dataType)
 {
     return(emptyValues.TryGetValue(dataType, out var values) ?
            values : Enumerable.Empty <object>());
 }
 public PredicateBuilderConfiguration WithEmptyValues(PredicateDataType dataType, IEnumerable <object> values)
 {
     return(WithEmptyValues(dataType, values?.ToArray()));
 }