我正在將列表(文件夾)轉換爲層次結構最困難。平面列表到層次結構
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」,什麼都沒有}
我想不出如何遞歸移動子文件夾到他們的父母的兒童財產。
我想用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
ToLookup擴展的很好用法。 – 2012-02-19 23:23:42