using System.Collections.ObjectModel;
using System.Collections.Generic;
public static void Main()
var primeMinisters = new PrimeMinistersByYearDictionary()
new PrimeMinister("James Callaghan", 1974),
new PrimeMinister("Margaret Thatcher", 1979),
new PrimeMinister("Tony Blair", 1997)
primeMinisters.Add(new PrimeMinister("John Major", 1990));
Console.WriteLine("Tony is " + primeMinisters[1997]);
var list = (IList<PrimeMinister>)primeMinisters;
Console.WriteLine("First PM is " + list[0]);
foreach (var pm in primeMinisters)
public class PrimeMinistersByYearDictionary :
KeyedCollection<int, PrimeMinister>
protected override int GetKeyForItem(PrimeMinister item)
public class PrimeMinister
public string Name { get; private set; }
public int YearElected { get; private set; }
public PrimeMinister(string name, int yearElected)
this.YearElected = yearElected;
public override string ToString()
return string.Format("{0}, elected: {1}", Name, YearElected);