using System.Collections.Generic;
public static void Main()
Console.WriteLine("Hello World");
var items = new List<DummyData>()
new DummyData() { Id = 1, Parent = 0 },
new DummyData() { Id = 2, Parent = 0 },
new DummyData() { Id = 11, Parent = 1 },
new DummyData() { Id = 111, Parent = 11 },
new DummyData() { Id = 1111, Parent = 111 },
new DummyData() { Id = 22, Parent = 2 },
new DummyData() { Id = 222, Parent = 22 }
var mapped = items.Where(i => i.Parent == 0).Select(i => new Dummy() {
Dummies = items.Where(i_2 => i_2.Parent == i.Id).Select(i_2 =>
Dummies = items.Where(i_3 => i_3.Parent == i_2.Id).Select(i_3 =>
Dummies = items.Where(i_4 => i_4.Parent == i_3.Id).Select(i_4 =>
Dummies = new List<Dummy>()
mapped.ForEach(d => Console.Write(d.ToString() + "\n\n\n"));
public int Id { get; set; }
public int Parent { get; set; }
public int Id { get; set; }
public List<Dummy> Dummies { get; set; }
public string ToString(string indent = "\t") {
var output = indent + this.Id.ToString();
output += ": \n" + d.ToString();