Multilevel Sorting with IComparable and IComparer: Listing 5.

The SortByPopulationName subclass.

public class SortByPopulationName : IComparer<City>
{
  public int Compare(City c1, City c2)
  {
    if (c1.population == c2.population &&
        String.Compare(c1.name, c2.name) == 0)
      return 0;
    else if (c1.population > c2.population)
      return 1;
    else if (c1.population == c2.population &&
      String.Compare(c1.name, c2.name) > 0)
      return 1;
    else
      return -1;
  }
}

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.