定义学生类。
public class Student
{
public string Name { get; set; }
public string Sex { get; set; }
public int Age { get; set; }
}
自定义比较器AgeComparer,实现接口IComparer<Student>,对学生年龄进行比较。
public class AgeComparer:IComparer<Student>
{
public int Compare(Student x, Student y)
{
return x.Age.CompareTo(y.Age);
}
}
自定义比较器NameComparer,实现接口IComparer<Student>,对学生姓名进行比较。
public class NameComparer:IComparer<Student>
{
public int Compare(Student x, Student y)
{
return x.Name.CompareTo(y.Name);
}
}
调用List<T>.Sort方法实现stuList按照学生的年龄与姓名排序。
static void Main(string[] args)
{
List<Student> stuList = new List<Student>();
stuList.Add(new Student() { Name = "aki", Sex = "Man", Age = 18 });
stuList.Add(new Student() { Name = "cki", Sex = "Woman", Age = 20 });
stuList.Add(new Student() { Name = "dki", Sex = "Woman", Age = 16 });
stuList.Add(new Student() { Name = "bki", Sex = "Man", Age = 21 });
stuList.Add(new Student() { Name = "fki", Sex = "Woman", Age = 19 });
stuList.Sort(new AgeComparer());
Console.WriteLine("按照年龄排序:");
foreach (Student stu in stuList)
{
Console.WriteLine("Name=" + stu.Name + ";Sex=" + stu.Sex + ";Age=" + stu.Age);
}
stuList.Sort(new NameComparer());
Console.WriteLine();
Console.WriteLine("按照名称排序:");
foreach (Student stu in stuList)
{
Console.WriteLine("Name=" + stu.Name + ";Sex=" + stu.Sex + ";Age=" + stu.Age);
}
}
代码执行结果如下。