首先定义比较类 继承自IComparer<Racer>
1 public class RacerComparer : IComparer<Racer> 2 { 3 public enum CompareType 4 { 5 FirstName, LastName, Country, Wins 6 } 7 private CompareType compareType; 8 public RacerComparer(CompareType compareType) 9 { 10 this.compareType = compareType; 11 } 12 public int Compare(Racer x, Racer y) 13 { 14 if (x == null && y == null) return 0; 15 if (x == null) return -1; 16 if (y == null) return 1; 17 18 int result; 19 switch (compareType) 20 { 21 case CompareType.FirstName: 22 return string.Compare(x.FirstName, y.FirstName); 23 case CompareType.LastName: 24 return string.Compare(x.LastName, y.LastName); 25 case CompareType.Country: 26 result = string.Compare(x.Country, y.Country); 27 if (result == 0) 28 return string.Compare(x.LastName, y.LastName); 29 else 30 return result; 31 case CompareType.Wins: 32 return x.Wins.CompareTo(y.Wins); 33 default: 34 throw new ArgumentException("Invalid Compare Type"); 35 } 36 } 37 }