using System.Collections.Generic;
public static void Main()
var cities = new Dictionary<string,City>();
cities.Add("Toronto", new City(12851821, "Ontario"));
cities.Add("Quebec City", new City(7903001, "Quebec"));
cities.Add("Halifax",new City(921727, "Nova Scotia"));
cities.Add("Fredericton",new City(751171,"New Brunswick"));
cities.Add("Winnipeg",new City(1208268,"Manitoba"));
cities.Add("Victoria",new City(4400057,"British Columbia"));
cities.Add("Charlottetown", new City(140204, "Prince Edward Island"));
cities.Add("Regina", new City(1033381, "Saskatoon"));
cities.Add("Edmonton", new City(3645257, "Alberta"));
cities.Add("St. John's", new City(514536, "Newfoundland and Labrador"));
foreach (var c in cities)
Console.WriteLine("{0} is a capital of {1}", c.Key, c.Value.province);
var NACities = new HashSet<string>();
NACities.Add("Mexico City");
NACities.Add("New York City");
NACities.Add("Los Angeles");
NACities.Add("Ecatepec de Morelos");
NACities.Add("Montreal");
NACities.Add("Philadelphia");
NACities.IntersectWith(cities.Keys);
foreach (var c in NACities)
Console.WriteLine("\n\n{0} is in Canada and also in the top 10 largest cities in North America", c);
public int population{get;set;}
public string province { get; set;}
public City(int pop, string pr)
public override string ToString()
return string.Format("{0} {1}", this.population, this.province);