Visão geral
Uma lista de Realm implementa IList<T> e contém zero ou mais instâncias de um tipo de Realm . Como um List C#, uma coleção Realm é homogênea (todos os objetos em uma coleção são do mesmo tipo).
Listas
Objetos de Realm podem conter listas de qualquer tipo de dados suportado. Você cria uma coleção definindo uma propriedade somente de início do tipo IList<T>, onde T pode ser qualquer tipo de dados (exceto outras coleções). Uma lista de objetos de Realm representa um relacionamento para muitos entre dois tipos de Realm, a classe que os contém e o tipo na lista.
As listas são mutáveis: dentro de uma transação escrita, você pode adicionar e remover elementos de uma lista.
Listas e anulabilidade
Excluir um objeto do reconhecimento de data center o removerá de todas as listas em que ele estava presente. Portanto, uma lista de objetos nunca conterá objetos excluídos. No entanto, listas de tipos primitivos podem conter valores nulos. Se você não quiser permitir valores nulos em uma lista, use tipos não anuláveis na declaração da lista (por exemplo, use IList<double> em vez de IList<double?>). Se você estiver usando a definição do tipo de esquema mais antigo (suas classes derivam da classe base do RealmObject ) ou você não tiver a anulabilidade habilitada, use o atributo [Required] se a lista contiver tipos de referência anuláveis, como string ou byte[].
Importante
Não suportado com a sincronização
Os domínios somente locais oferecem suporte a collections de valores anuláveis (opcional), mas o Sync não.
Para obter mais informações, consulte propriedade obrigatórias e opcionais.
Atento às mudanças
Você pode usar o evento INotifyCollectionChanged.CollectionChanged em uma lista para observar as alterações na lista, e o evento INotifyPropertyChanged.PropertyChanged para observar as alterações em propriedades específicas da lista.
No seguinte exemplo de código, temos uma classe com uma propriedade IList<string> denominada StringList. Criamos manipuladores de eventos para os eventos CollectionChanged e PropertyChanged:
var list = container.StringList.AsRealmCollection(); list.CollectionChanged += (sender, e) => { Console.WriteLine($"List {sender} changed: {e.Action}"); }; list.PropertyChanged += (sender, e) => { Console.WriteLine($"Property changed on {sender}: {e.PropertyName}"); };