LINQ: Выбор «Deep» в иерархическом объекте?Выбор всех детей, имеющих одного и того же родителя? - PullRequest
0 голосов
/ 10 февраля 2011

Может кто-нибудь помочь?

В настоящее время у меня есть файл класса с именем Member, в котором хранится ссылка на объект и ссылка на объект его родителя.Затем у меня есть СПИСОК, который содержит «много» членов.Это действительно как плоская файловая система, но она прекрасно работает с linq, как я вижу, дает мне ВСЕ дочерние элементы, у которых есть родительский элемент X. Использование поля ссылки на объект свойства Parent.

Теперь я думал овоссоздание моего файла класса и добавление нового поля, которое будет содержать LIST of Member и удалить свойство Parent - таким образом, у меня есть только 1 объект, но есть другие объекты с этим объектом.Надеюсь, что имеет смысл?: -)

Итак, если у меня есть этот новый объект, как я могу использовать linq, чтобы получить все дочерние элементы определенного родителя?Прямой потомок?и было бы возможно сгладить файл, т.е. вернуть элементы как отдельные объекты, которые являются частью LIST.

Я хотел бы услышать любые комментарии о том, какой метод лучше, то есть то, что у меня есть сейчас, и иерархический подход.

Заранее спасибо

1 Ответ

0 голосов
/ 08 декабря 2011

Каждый раз, когда вы создаете иерархические коллекции, помните, что существует множество различных структур данных для решения этого типа проблемы.есть довольно сложный, но обеспечивающий потрясающую производительность.Он в основном состоит из словаря с целыми числами, содержащего всю коллекцию.Сами объекты сохраняют отношения Parent и имеют отложенную загрузку дочерней коллекции HashSet.Это позволяет легко получить коллекцию родителей или детей для любого объекта на любом уровне дерева.

Хотя комментарии верныБез некоторого кода Samel я не могу дать вам пример того, как это будет выглядеть.это все теоретически.

...