Multilevel Sorting with IComparable and IComparer: Listing 4.

Several sort orders but no default order.

public class City
{
  private string name;
  private double population;
  private string region;

  public City(string name, double population, string region) { . . }
  public override string ToString() { . . }

  public class SortByNameAscending : IComparer<City> { . . }
  public class SortByNameDescending : IComparer<City> { . . }
  public class SortByPopulationName : IComparer<City> { . . }
}

About the Author

Dr. James McCaffrey works for Microsoft Research in Redmond, Wash. He has worked on several Microsoft products including Azure and Bing. James can be reached at jamccaff@microsoft.com.