using System.Collections.Generic;
private static readonly IList<Menu> MenuItems = new List<Menu>
new Menu(1, -1, "Menu1"),
new Menu(2, -1, "Menu2"),
new Menu(3, -1, "Menu3"),
public Menu(int id, int parentId, string name)
public int ParentId { get; }
public string Name { get; }
public static void Main()
Console.WriteLine("Printed menu:");
private static void PrintMenu(IEnumerable<Menu> menuItems)
var rootLevel = menuItems.Where(x => x.ParentId == -1).ToList();
foreach (var root in rootLevel)
private static void PrintMenuItem(Menu menuItem, int indentation)
Console.WriteLine(new string('*', indentation) + menuItem.Name);
var children = MenuItems.Where(x => x.ParentId == menuItem.Id).ToList();
foreach (var child in children)
PrintMenuItem(child, indentation + 4);