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); }
public virtual IEnumerable <string> GetColumns() { return(_query.Fields.Select(f => $"[{_validColumns.GetColumn(f)}]")); }