1.Student.cs
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SortSample
{
public class Student
{
public string NO { get; set; }
public string Name { get; set; }
public string Sex { get; set; }
public int Age { get; set; }
public override string ToString()
{
return
string.Format(
"学号:{3},姓名:{0},性别:{1},年龄:{2}",
Name, Sex, Age, NO);
}
}
public static class Ex
{
public static void Display(this List<Student> students)
{
foreach (Student student in students)
Console.WriteLine(student);
Console.WriteLine("=========================");
}
}
}
2.Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SortSample
{
class Program
{
static void Main(string[] args)
{
List<Student> students = new List<Student>
{
new Student{NO="009",Name="王海",Sex="男",Age=20},
new Student{NO="003",Name="王海",Sex="女",Age=16},
new Student{NO="001",Name="王海",Sex="男",Age=22},
new Student{NO="004",Name="王海",Sex="女",Age=13},
new Student{NO="002",Name="王海",Sex="男",Age=24},
new Student{NO="006",Name="王海",Sex="女",Age=18},
new Student{NO="005",Name="王海",Sex="男",Age=21}
};
students.Display();
Sort(students, Compare);
students.Display();
Sort(students, CompareByAge);
students.Display();
Sort(students,
delegate(Student s1, Student s2)
{
return s1.Age > s2.Age;
}
);
students.Display();
Sort(students,
(s1, s2) => { return s1.Age < s2.Age; });
students.Display();
Sort(students,
(s1, s2) => s1.Age < s2.Age);
students.Display();
Console.ReadKey();
}
public static List<Student> Sort(
List<Student> students,
CompareStudent compare
)
{
for (int i = 0; i < students.Count; i++)
{
for (int j = 0; j < students.Count; j++)
{
if (compare(students[i], students[j]))
{
Student s = students[i];
students[i] = students[j];
students[j] = s;
}
}
}
return students;
}
public delegate bool CompareStudent(Student student1, Student student2);
public static bool Compare(Student student1, Student student2)
{
return student1.NO.CompareTo(student2.NO) > 0;
}
public static bool CompareByAge(Student student1, Student student2)
{
return student1.Age < student2.Age;
}
}
}