Me está costando mucho convertir una lista (de carpeta) en una jerarquía.lista plana a la jerarquía
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
que necesita a la lista (de la carpeta) volver con niños pobladas.
Construyo una lista (de carpetas) a partir de los datos en la base de datos.
{1, "Carpeta 1", Nada} {2, "Carpeta 2", 1} {3, "Carpeta 3", 2} {4, "Carpeta 4", 3} {5 , "Carpeta 5", Nada}
No puedo averiguar cómo mover de forma recursiva las carpetas secundarias a la propiedad de los elementos secundarios de su elemento primario.
Me gustaría hacer esto con LINQ.
Cualquier ayuda es muy apreciada.
actualización
Gracias por su respuesta, pero no está allí. En función de su respuesta, se me ocurrió esto que casi funciona.
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}
puedo obtener una lista de las tres carpetas:
Root
--Child
Child
--Grand Child
Grand Child
debe verse como:
Root
--Child
----Grand Child
Un buen uso de la extensión ToLookup. –