---
title: Numerical
slug: cms-12/docs/numerical
docTags: 
createdAt: 2026-08-10T15:55:55.000Z
---

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

The `Filter` method can filter *numerical* fields in several ways. Supported numerical types are `int`, `double`, `float`, `long`, and their nullable equivalents. Below is a list of use cases and examples illustrating the available methods.

## Exists

To search for documents where a numerical field has a value, use the `Exists` method. The following search finds blog posts that have an `AuthorId` property; it is similar to the LINQ query `Where(x => x.AuthorId.HasValue)`.

```csharp
var searchQuery = client.Search<BlogPost>()
    .Filter(x => x.AuthorId.Exists());
```

Like all filters, you can negate it with an exclamation point (!). To find blog posts without an `AuthorId`, use the following code.

```csharp
var searchQuery = client.Search<BlogPost>()
    .Filter(x => !x.AuthorId.Exists());
```

## Exact match

For exact matching, use the `Match` method. The following search matches blog posts with ID 42 but not those with ID 41 or 43. The LINQ equivalent is `Where(x => x.Id == 42)`.

```csharp
var searchQuery = client.Search<BlogPost>()
    .Filter(x => x.Id.Match(42));
```

## Match by range

To find documents with a numeric field that has a value within a given range, use the `InRange` method. The following search matches blog posts with zero to five comments; it matches blog posts with one, two, three, four, or five comments but not those with six or seven comments.

An equivalent in LINQ is `Where(x => x.NumComments >= 0 && x.NumComments <= 5)`.

```csharp
var searchQuery = client.Search<BlogPost>()
    .Filter(x => x.NumComments.InRange(0, 5));
```

For some numerical types, such as int, there are also the `GreaterThan` and `LessThan` methods, which make range filtering easier. For instance, given that `NumComments` cannot be negative; you can rewrite the previous search.

```csharp
var searchQuery = client.Search<BlogPost>()
    .Filter(x => x.NumComments.LessThan(6));
```

## Match by a set of values

The `In` method lets you filter on `int` fields that match an explicit set of values. For instance, the following matches blog posts with one, three, or five comments.

```csharp
var searchQuery = client.Search<BlogPost>()
    .Filter(x => x.NumComments.In(new List<int> { 1, 3, 5 }));
```

## Filter on numerical collections

Use the `Exists`, `In`, and `Match` methods for properties that implement `IEnumerable<int>`.

The following search, which uses `Exists`, matches blog posts that have at least one category ID.

```csharp
var searchQuery = client.Search<BlogPost>()
    .Filter(x => x.CategoryIds.Exists());
```

The following search matches any blog post that has a category with ID 42. It does not, however, limit the result to blog posts that only have that category ID.

```csharp
var searchQuery = client.Search<BlogPost>()
    .Filter(x => x.CategoryIds.Match(42));
```
