HomeDev GuideAPI Reference
Dev GuideAPI ReferenceUser GuideGitHubNuGetDev CommunityDoc feedbackLog In

Use filters to narrow down search results, or use them for database-like queries. 

Use the Filter method to filter `DateTime` and nullable `DateTime` fields in a number of ways. The following list shows use cases and examples illustrating the available methods.


If you cache the search results using the [built in caching functionality](🔗), you probably do not want to use `DateTime.Now` in your filters, because the cache key will differ for each search. In those cases, instead, normalize the `DateTime` value to the closest minute or, at the very least, second.

## Existence

To search for documents where a `DateTime` field has a value, use the Exists method. The following search finds blog posts with a `PublishDate` property with a value. The following code is similar to the LINQ query `Where(x => x.PublishDate.HasValue)`.

To negate it with an exclamation point (!) to find all blog posts with no publish date, use the code below.

## Exact match

For exact matching, use the `Match` method. The following search matches blog posts published exactly at 2010-01-01 00:00. It does not match those published 2009-12-31, 2010-01-01 01:00 or 2010-01-02. The LINQ equivalent is `Where(x => x.PublishDate == new DateTime(2010, 1, 1))`.

## Match by range

To find documents with a `DateTime` field whose value is within a given range, use the `InRange` method. The following search matches blog posts that were published between 2010-01-01 00:00 and 2010-01-02 00:00. An equivalent in LINQ is `Where(x => x.PublishDate >= new DateTime(2010, 1, 1) && x.PublishDate <= new DateTime(2010, 1, 2))`.

For convenience, the .NET API also features the `GreaterThan`, `LessThan`, `Before`, and `After` methods that make range filtering easier for `DateTime` fields.