static void Main(string[] args) { string input = ""; List <Person> persons = new List <Person>(); while ((input = Console.ReadLine()) != "End") { string[] splitInfo = input.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries); string name = splitInfo[0]; if (!persons.Any(x => x.Name == name)) { Person person = new Person(); person.Name = name; persons.Add(person); } var currentPerson = persons.First(x => x.Name == name); switch (splitInfo[1]) { case "company": Company company = new Company(); company.AddCompany(splitInfo[2], splitInfo[3], double.Parse(splitInfo[4])); currentPerson.Company = company; break; case "pokemon": Pokemon pokemon = new Pokemon(); pokemon.AddPokemon(splitInfo[2], splitInfo[3]); currentPerson.Pokemons.Add(pokemon); break; case "parents": Parent parent = new Parent(); parent.AddParent(splitInfo[2], splitInfo[3]); currentPerson.Parents.Add(parent); break; case "children": Children children = new Children(); children.AddChildren(splitInfo[2], splitInfo[3]); currentPerson.Childrens.Add(children); break; case "car": Car car = new Car(); car.AddCar(splitInfo[2], splitInfo[3]); currentPerson.Car = car; break; } } string personNeededInfo = Console.ReadLine(); var personInfo = persons.First(x => x.Name == personNeededInfo); PrinOutput(personInfo); }