Navigation

Sets - .NET SDK

New in version 10.2.0-beta.1.

A Realm set, like the C# HashSet<>, is an implementation of ICollection<> and IEnumerable<>. It supports values of any Realm type except collections. To define a set, use a getter-only ISet<TValue> property, where TValue is any of the supported types.

Deleting an object from the database will remove it from any sets in which it existed. Therefore, a set of objects will never contain null objects. However, sets of primitive types can contain null values. If you do not want to allow null values in a set, then either use non-nullable types in the set declaration (for example, use ISet<double> instead of ISet<double?>), or add the [Required] attribute if the set contains nullable reference types, such as string or byte[].

Important
Not Supported with Sync

Local-only Realm Databases support collections of nullable (optional) values, but Sync does not.

The following code shows examples of set types:

public class Inventory : RealmObject
{
// A Set can contain any Realm-supported type, including
// objects that inherit from RealmObject or EmbeddedObject
public ISet<Plant> PlantSet { get; }
public ISet<double> DoubleSet { get; }
// Nullable types are supported in local-only
// Realms, but not with Sync
public ISet<int?> NullableIntsSet { get; }
// For C# types that are implicitly nullable, you can
// use the [Required] attribute to prevent storing null values
[Required]
public ISet<string> RequiredStrings { get; }
}
Note

You cannot use Linq to query against a Realm Set. Instead, use a string query. For more information, see Data Type Queries.

Like other Realm collections, ISet implements INotifyCollectionChanged, so you can use it in data-binding scenarios (for example, when watching for changes).

Give Feedback

On this page

  • Overview
  • Data Binding