LiteDB - найти объект данных через List.contains - PullRequest
0 голосов
/ 18 марта 2020

Упрощенная версия. У меня есть два класса:

Public Class mSystem

    Public Property ID as ObjectID
    Public Property Name as string

End Class

Public Class mEmulator

    Public Property ID as ObjectID
    Public Property Name as string
    <BsonRef("mSystems")>
    Public Property AssociatedSystems as New List(Of mSystem)

End Class

Public Class Main

    Public Sub EmaultorsLinkedToSystem      

        dim SelectedSystem as mSystem = db.Collections.mSystems.Find(Function(x) x.Name = "Sony Playstation").FirstOrDefault

        test = db.Collections.mEmulators.Include(Function(x) x.AssociatedSystems).Find(Function(y) y.AssociatedSystems.Contains(SelectedSystem)).ToList

    End sub 

End Class

Теперь я знаю, что один объект данных mEmulator имеет "Sony Playstation" в своем списке (mSystem). Однако test возвращает ноль. Почему это не найти? Я пробовал несколько перестановок, но не могу заставить это работать. Есть идеи?

1 Ответ

0 голосов
/ 19 марта 2020

Метод Include используется для разрешения ссылок на другие коллекции, и вы не используете BsonRef с AssociatedSystems (по крайней мере, в этом примере, который вы предоставили). В вашем примере экземпляры mSystem в AssociatedSystems хранятся не в отдельной коллекции, а в виде массива встроенных документов в коллекции эмуляторов.

Попробуйте удалить вызов Include, это должно работать нормально.

...