se non ho capito male i padri non possono essere figli a loro volta, se è cosi le cose si semplificano parecchio.
La tua struttura dati è una lista di oggetti persona che sono i padri che oltre ai connotati ha anche una proprieta elenco figli List<Persona>.
codice:public class Persona { public int ID {get;set;} public string Nome {get;set;} //altre props public List<Persona> Figli {get;set} public Persona() { Figli = new List<Persona>(); } }Se invece i padri possono a loro volta essere figli la funzione generaAlbero la devi fare ricorsiva, gli devi passare l'id del padre (0 quando la chiami per la prima volta) e poi richiamarla dentro il foreach.codice:public List<Persona> GeneraAlbero() { public List<Persona> albero = new List<Persona>(); //Seleziona dal DB tutti i padri (quelli con id=0) //Aggiungi i padri alla lista albero foreach(Persona padre in albero) { // seleziona tutte le persone dal db che hanno come idPadre l'id di padre //Aggiungi i figli selezionati alla lista padre.Figli } return albero; }

Rispondi quotando