Dictionaries - .NET SDK

New in version 10.2.0-beta.1.

A Realm dictionary is an implementation of IDictionary that has keys of type String and supports values of any Realm type except collections. To define a dictionary, use a getter-only IDictionary<string, TValue> property, where TValue is any of the supported types.

A dictionary of objects can contain null objects. Likewise, dictionaries of primitive types can also contain null values. If you do not want to allow null values in a dictionary, then either use non-nullable types in the dictionary declaration (for example, use IDictionary<string, double> instead of IDictionary<string, double?>), or add the [Required] attribute if the dictionary contains nullable reference types, such as string or byte[].

Not Supported with Sync

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

The following code shows examples of dictionary types:

public class Inventory : RealmObject
// The key must be of type string; the value can be
// of any Realm-supported type, including objects
// that inherit from RealmObject or EmbeddedObject
public IDictionary<string, Plant> PlantDict { get; }
public IDictionary<string, bool> BooleansDict { get; }
// Nullable types are supported in local-only
// Realms, but not with Sync
public IDictionary<string, int?> NullableIntDict { get; }
// For C# types that are implicitly nullable, you can
// use the [Required] attribute to prevent storing null values
public IDictionary<string, string> RequiredStringsDict { get; }

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

Like other Realm collections, IDictionary 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