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, WA. James has worked on several key Microsoft products such as Internet Explorer and Bing. James can be reached at jamccaff@microsoft.com.