плоский список в иерархию

Мне труднее всего преобразовать список (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
8
задан Sampson 15 January 2011 в 23:31
поделиться