Мне труднее всего преобразовать список (Of Folder) в иерархию.
Public Class Folder
Public Property FolderID() As Integer
Public Property Name() As String
Public Property ParentFolderID() As Integer
Public Property Children() as IEnumerable(Of Folder)
End Class
Мне нужно вернуть List (Of Folder) с заполненными дочерними элементами.
Я создаю Список (Папка) из данных в базе данных.
{1, "Папка 1", Ничего} {2, «Папка 2», 1} {3, «Папка 3», 2} {4, «Папка 4», 3} {5, «Папка 5», Ничего}
Я не могу понять, как рекурсивно переместить дочерние папки в свойство Children их родительского элемента.
Я хотел бы сделать это с помощью LINQ.
Любая помощь приветствуется.
Обновление
Спасибо за ваш ответ, но не совсем. Основываясь на вашем ответе, я пришел к такому выводу, что почти работает.
Dim list = (From folder in folderList Select New Folder() With {
.FolderID = folder.FolderID,
.Name = folder.Name,
.ParentFolderID = folder.ParentFolderID,
.Children = (From child in folderList
Where child.ParentFolderID = item.FolderID).ToList()}).ToList()
{1, "Root", Nothing}
{2, "Child", 1}
{3, "Grand Child", 2}
Я получаю список всех трех папок:
Root
--Child
Child
--Grand Child
Grand Child
Должен выглядеть так:
Root
--Child
----Grand Child