我正在将列表(文件夹)转换为层次结构最困难。平面列表到层次结构
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