Table of Contents

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.