Ciao
ho questa struttura dati
Codice PHP:
    public class MenuItems : List<MenuItem>
    {
    }
    public class 
MenuItem
    
{
        
#region Private members
        
private string menuItemId string.Empty; 
        private 
string parentMenuItemId string.Empty; 
        private 
string description string.Empty; 
        private 
int order 0
        private 
MenuItems childMenuItems = new MenuItems(); 

        
#endregion

        #region Public properties
        
public string MenuItemId
        
{
            
get { return menuItemId; }
            
set menuItemId value; }
        }
        public 
string ParentMenuItemId
        
{
            
get { return parentMenuItemId; }
            
set parentMenuItemId value; }
        }
        public 
string Description
        
{
            
get { return description; }
            
set description value; }
        }
        public 
int Order
        
{
            
get { return order; }
            
set order value; }
        }
        public 
MenuItems ChildMenuItems
        
{
            
get { return childMenuItems; }
            
set childMenuItems value; }
        }
        

        
#endregion
    

dalla base dati mi ritorna un contenitore non strutturato di MenuItems

Come nell'esempio da me ricreato
Codice PHP:
        private MenuItems createMenuItems()
        {
            
string menuid1 Guid.NewGuid().ToString();
            
string menuid2 Guid.NewGuid().ToString();
            
string submenuid1 Guid.NewGuid().ToString();
            
string submenuid2 Guid.NewGuid().ToString();
            
MenuItems menuItems = new MenuItems();

            
MenuItem menuItem = new MenuItem();

            
#region menu1

            
menuItem.MenuItemId menuid1;
            
menuItem.ParentMenuItemId Guid.Empty.ToString();
            
menuItem.Description "menu1";
            
menuItem.Order 0;
            
menuItem.Type MenuType.UNDEFINED;
            
menuItems.Add(menuItem);

            
menuItem = new MenuItem();
            
menuItem.MenuItemId menuid1;
            
menuItem.ParentMenuItemId submenuid1;
            
menuItem.Description "menu1-submenu1";
            
menuItem.Type MenuType.UNDEFINED;
            
menuItems.Add(menuItem);

            
menuItem = new MenuItem();
            
menuItem.MenuItemId menuid1;
            
menuItem.ParentMenuItemId submenuid2;
            
menuItem.Description "menu1-submenu2";
            
menuItem.Type MenuType.UNDEFINED;
            
menuItems.Add(menuItem);

            
#endregion

            #region menu2

            
menuItem.MenuItemId menuid2;
            
menuItem.ParentMenuItemId Guid.Empty.ToString();
            
menuItem.Description "menu2";
            
menuItem.Order 0;
            
menuItem.Type MenuType.UNDEFINED;
            
menuItems.Add(menuItem);

            
menuItem = new MenuItem();
            
menuItem.MenuItemId menuid2;
            
menuItem.ParentMenuItemId Guid.NewGuid().ToString();
            
menuItem.Description "menu2-submenu1";
            
menuItem.Order 0;
            
menuItem.Type MenuType.UNDEFINED;
            
menuItems.Add(menuItem);

            
menuItem = new MenuItem();
            
menuItem.MenuItemId menuid2;
            
menuItem.ParentMenuItemId Guid.NewGuid().ToString();
            
menuItem.Description "menu2-submenu2";
            
menuItem.Order 1;
            
menuItem.Type MenuType.UNDEFINED;
            
menuItems.Add(menuItem);

            
menuItem = new MenuItem();
            
menuItem.MenuItemId menuid2;
            
menuItem.ParentMenuItemId Guid.NewGuid().ToString();
            
menuItem.Description "menu2-submenu3";
            
menuItem.Type MenuType.UNDEFINED;
            
menuItems.Add(menuItem);
            
#endregion

            #region submenu1
            
menuItem = new MenuItem();
            
menuItem.MenuItemId Guid.NewGuid().ToString();
            
menuItem.ParentMenuItemId submenuid1;
            
menuItem.Description "submenu1-2submenu1";
            
menuItem.Type MenuType.UNDEFINED;
            
menuItems.Add(menuItem);

            
menuItem = new MenuItem();
            
menuItem.MenuItemId Guid.NewGuid().ToString();
            
menuItem.ParentMenuItemId submenuid1;
            
menuItem.Description "submenu1-2submenu2";
            
menuItem.Type MenuType.UNDEFINED;
            
menuItems.Add(menuItem);
            
#endregion

            
return menuItems;
        } 
quello che sto cercando di fare è una funzione che in automatico mi crea una struttura menu corretta, mettendo sotto i menu genitori i rispettivi figli ed eventualemnte i nipoti dei figli.

Riuscite ad aiutarmi?