コード例 #1
0
        public virtual IEnumerable <Clause> Build(Filter filter)
        {
            var propertyName = _validColumns.GetColumn(filter.Property);
            var clauses      = new List <Clause>();

            if (filter.Values.IsNotNull() && filter.Values.Any())
            {
                // ReSharper disable once PossibleInvalidOperationException
                if (filter.includeNulls.IsNotNull() && !filter.includeNulls.Value)
                {
                    throw new ArgumentException("When providing values in a filter, you cannot also set include nulls to false. This negates the filter entirely.");
                }
                clauses.Add(GetValuesClause(propertyName, filter));
            }

            if (filter.Range.IsNotNull())
            {
                clauses.Add(GetRangeClause(filter, propertyName));
            }

            if (filter.includeNulls.GetValueOrDefault())
            {
                clauses.Add(new NullClause(propertyName));
            }
            else if (filter.includeNulls.IsNotNull())
            {
                clauses.Add(new NotNullClause(propertyName));
            }

            return(clauses);
        }
コード例 #2
0
 public virtual IEnumerable <string> GetColumns()
 {
     return(_query.Fields.Select(f => $"[{_validColumns.GetColumn(f)}]"));
 }