Filters are predicates that execute a boolean algebra expression upon an item of a specific type. The abstraction of a filter is defined by the INFilter<T> interface, that has only one method:
bool Filter(T item);
The filter method returns true, if the item passes the filter, otherwise it returns false.
NOV Data Structures implement a large set of commonly used filters that are summarized by the following table:
Filter | Description |
Basic Boolean Algebra Filters |
|
---|---|
NAndFilter<T> | Aggregates two other filters. Returns true if both filters return true, otherwise returns false. |
NOrFilter<T> | Aggregates two other filters. Returns true if at least one of the filters return true, otherwise returns false. |
NNotFilter<T> | Aggregates a single other filter. Returns true if the aggregated filter returns false, otherwise returns true. |
NFalseFilter<T>.Instance | Singleton filter that always returns false. |
NTrueFilter<T>.Instance | Singleton filter that always returns true. |
Comparison Filters. |
|
NEqualsToFilter<T> | Returns true if item.CompareTo(Value) == 0. |
NGreaterThanFilter<T> | Returns true if item.CompareTo(Value) > 0. |
NGreaterThanOrEqualToFilter<T> | Returns true if item.CompareTo(Value) >= 0. |
NLessThanFilter<T> | Returns true if item.CompareTo(Value) < 0. |
NLessThanOrEqualToFilter<T> | Returns true if item.CompareTo(Value) <= 0. |
Objects Equality Filters. |
|
NObjectEqualsFilter<T> | Returns true if item.Equals(Other) == true. Both item and Other can be null. |
NReferenceEqualsFilter<T> | Returns true if Object.ReferenceEquals(Other) == true. Both item and Other can be null. |
Type Filters. |
|
NAsFilter<T, TTargetType> | Aggregates another filter of type INFilter<TTargetType>. Returns true, if the item can be casted to TTargetType and the aggregated filter returns true. |
NIsFilter<T, TTargetType>.Instance | Singleton filter, which only passes items, which are instances of TTargetType. |
NTypeEqualsFilter<T, TTargetType>.Instance | Singleton filter, which only passes items, whose type is exactly TTargetType. |