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 menus = menuItems.ToList();
PrintRecursively(menus, -1, 0);
private static void PrintRecursively(List<Menu> menus, int parentId, int level)
var builder = new StringBuilder();
builder.Append('*', level * 4);
for (int i = 0; i < menus.Count; i++)
if (menu.ParentId == parentId)
builder.Append(menu.Name);
Console.WriteLine(builder.ToString());
builder.Length -= menu.Name.Length;
PrintRecursively(menus, menu.Id, level + 1);