Class Filter
- Namespace
- YndigoBlue.Velocity.Model
- Assembly
- YndigoBlue.Velocity.dll
Represents a filter container for WHERE and HAVING clauses in SQL queries.
public class Filter : IFilterItem, IEnumerable
- Inheritance
-
Filter
- Implements
Examples
Simple filter with AND logic:
// WHERE (firstname = 'John') AND (age > 30)
Criterion<string> nameCriterion = new Criterion<string>(
usersTable["firstname"],
ConditionalType.Equals,
"John"
);
Criterion<int> ageCriterion = new Criterion<int>(
usersTable["age"],
ConditionalType.GreaterThan,
30
);
Filter filter = new Filter();
filter.Add(nameCriterion);
filter.Add(new BooleanItem(BooleanType.And));
filter.Add(ageCriterion);
query.SetWhereFilter(filter);
Complex nested filter:
// WHERE (firstname = 'John') AND ((lastname = 'Smith') OR (title = 'Mr.'))
Criterion<string> firstnameCriterion = new Criterion<string>(
usersTable["firstname"],
"John"
);
Criterion<string> lastnameCriterion = new Criterion<string>(
usersTable["lastname"],
"Smith"
);
Criterion<string> titleCriterion = new Criterion<string>(
usersTable["title"],
"Mr."
);
// Build nested filter: (lastname = 'Smith') OR (title = 'Mr.')
Filter nestedFilter = new Filter();
nestedFilter.Add(lastnameCriterion);
nestedFilter.Add(new BooleanItem(BooleanType.Or));
nestedFilter.Add(titleCriterion);
// Build main filter: (firstname = 'John') AND (nested filter)
Filter mainFilter = new Filter();
mainFilter.Add(firstnameCriterion);
mainFilter.Add(new BooleanItem(BooleanType.And));
mainFilter.Add(nestedFilter);
query.SetWhereFilter(mainFilter);
Creating filter from a single criterion:
Criterion<string> statusCriterion = new Criterion<string>(
usersTable["status"],
"active"
);
// Shorthand for single-criterion filter
Filter filter = new Filter(statusCriterion);
query.SetWhereFilter(filter);
Remarks
A Filter is the top-level container for filter logic in queries. It contains a collection of IFilterItem objects, which can be:
- Criterion<T> - Individual comparison operations (e.g., age > 30)
- BooleanItem - Logical connectors (AND, OR)
- Nested Filter objects - For grouped conditions
Filters support nesting, allowing complex logical expressions to be built. The Filter implements IFilterItem, which means filters can contain other filters.
Constructors
- Filter()
Creates a new empty filter.
- Filter(IEnumerable<IFilterItem>)
Creates a new filter from a collection of filter items.
- Filter(IFilterItem)
Creates a new filter containing a single filter item.
Properties
- FilterItemType
Gets the type of this filter item (always FilterItemType.Filter).
- FilterItems
Gets the collection of filter items (criteria, boolean operators, and nested filters).
Methods
- Add(IFilterItem)
Adds a filter item (criterion, boolean operator, or nested filter) to this filter.
- GetEnumerator()
Returns an enumerator that iterates through the filter items.