using System.Collections.Generic;
Dictionary<string, string> subs = new Dictionary<string, string>();
public void addSub(string name, string number)
if (this.subs.ContainsKey(name)) {
Console.WriteLine("{0} already has a number!", name);
this.subs.Add(name, number);
foreach(KeyValuePair<string, string> kvp in this.subs)
Console.WriteLine("{0} phone is: {1}", kvp.Key, kvp.Value);
public List<KeyValuePair<string, string>> getSubsWithPhone(string phone) {
List<KeyValuePair<string, string>> subs = new List<KeyValuePair<string, string>>();
foreach(KeyValuePair<string, string> kvp in this.subs)
if (kvp.Value == phone) {
public static void Main()
PhoneBook instance = new PhoneBook();
instance.addSub("Ivan", "+79998887766");
instance.addSub("Not Ivan", "+78887776655");
instance.addSub("Hot Ivan", "+77776665544");
instance.addSub("Same as Hot Ivan", "+77776665544");
instance.addSub("Ivan", "+76665554433");
Console.WriteLine("Type phone to search:");
string requiredPhone = Console.ReadLine();
List<KeyValuePair<string, string>> subsWithPhone = instance.getSubsWithPhone(requiredPhone);
Console.WriteLine("Found {0} sub(s) with phone {1}", subsWithPhone.Count, requiredPhone);
foreach(KeyValuePair<string, string> kvp in subsWithPhone)
Console.WriteLine(kvp.Key);