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)
void printStar(int level)
Console.Write(new String('*', indent * level));
void printChildren(Menu node, int level)
Console.WriteLine(node.Name);
foreach (var item in menuItems.Where(u=>u.ParentId ==node.Id))
printChildren(item, level);
var roots = menuItems.Where(u => u.ParentId == -1);
foreach (var menu in roots)