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.
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 `
Before`, and `
After` methods that make range filtering easier for `