KeyedCollectionSample

CSharp · Console

/Program.cs

using System;
using System.Collections.ObjectModel;
using System.Collections.Generic;
public class Program
{
	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)
				Console.WriteLine(pm);
	}
}

public class PrimeMinistersByYearDictionary :
	KeyedCollection<int, PrimeMinister>
{
	protected override int GetKeyForItem(PrimeMinister item)
	{
		return item.YearElected;
	}
}

public class PrimeMinister
{
	public string Name { get; private set; }
	public int YearElected { get; private set; }

	public PrimeMinister(string name, int yearElected)
	{
		this.Name = name;
		this.YearElected = yearElected;
	}

	public override string ToString()
	{
		return string.Format("{0}, elected: {1}", Name, YearElected);
	}
}
;