static void Main(string[] args) { var distances = new BiDictionary<string, string, int>(); distances.Add("Sofia", "Varna", 443); distances.Add("Sofia", "Varna", 468); distances.Add("Sofia", "Varna", 490); distances.Add("Sofia", "Plovdiv", 145); distances.Add("Sofia", "Bourgas", 383); distances.Add("Plovdiv", "Bourgas", 253); distances.Add("Plovdiv", "Bourgas", 292); distances.Add("Varna", "Bourgas", 292); var distancesFromSofia = distances.FindByFirstKey("Sofia"); // [443, 468, 490, 145, 383] var distancesToBourgas = distances.FindBySecoundKey("Bourgas"); // [383, 253, 292] var distancesPlovdivBourgas = distances.FindByBothKeys("Plovdiv", "Bourgas"); // [253, 292] var distancesRousseVarna = distances.FindByBothKeys("Rousse", "Varna"); // [] var distancesSofiaVarna = distances.FindByBothKeys("Sofia", "Varna"); // [443, 468, 490] distances.Remove("Sofia", "Varna"); // true var distancesFromSofiaAgain = distances.FindByFirstKey("Sofia"); // [145, 383] var distancesToVarna = distances.FindBySecoundKey("Varna"); // [] var distancesToVarn1a = distances.FindByFirstKey("Varna"); // [] var distancesSofiaVarnaAgain = distances.FindByBothKeys("Sofia", "Varna"); // [] }