.NET Fiddle

CSharp · Console

/Program.cs

using System;
using System.Collections.Generic;

public class Program
{
	public static void Main()
	{
		var Persons = new List<Person>();
		Persons.Add(new Person("Eric"));
		Persons[0].Childs = new List<Person>();
		Persons[0].Childs.Add(new Person("Tom"));
		Persons[0].Childs.Add(new Person("John"));
		Persons[0].Childs[0].Childs = new List<Person>();
		Persons[0].Childs[0].Childs.Add(new Person("Bill"));
		Persons.Add(new Person("John"));
		
		DisplayPerson(Persons);
	}

	public class Person
	{
		public Person(string name)
		{
			this.Name = name;
		}

		public string Name {get;set;}
		public List<Person> Childs{get;set;}
	}

	public static void DisplayPerson(List<Person> persons, int level = 0)
	{
		if (persons != null)
		{
			level++;
			foreach (Person item in persons)
			{
				Console.WriteLine("-" + item.Name + ", Level" + level);
				DisplayPerson(item.Childs, level);
			}
		}
	}
}
;