前些天写程序时遇到这样一个问题:在一个List中存储了几个Point类型的坐标,需要根据这些坐标的X轴数值进行排序当时的想法是使用List.OrderBy方法
List1.OrderBy(p => p.X); //List1中存储了若干Point变量
但是List1并没有像预期的那样,按照X轴坐标排序,后来查了一些资料后,找到了解决办法:声明一个IEnumerable
<
T
> 枚举器,然后把OrderBy的结果传递给它
IEnumerable<Point> temp;
temp = List1.OrderBy(p => p.X);
Point min = temp.ElementAt(0); //使用ElementAt() 获取第一个数据
回到正题,说一下List的排序
一、继承IComparable接口,还要实现CompareTo()方法,调用时,直接使用Sort()方法即可
static void Main(string[] args)
<pre> {
List<Student> stuList = new List<Student>();
stuList.Add(new Student() { Age = 10, Name = "Jim" });
stuList.Add(new Student() { Age = 8, Name = "Rose" });
stuList.Add(new Student() { Age = 12, Name = "Tim" });
stuList.Sort();
Console.WriteLine(stuList[0].Name + ":" + stuList[0].Age);
Console.ReadKey();
}
public class Student : IComparable
{
public int Age { get; set; }
public string Name { get; set; }
public int CompareTo(Object obj)
{
Student stu = obj as Student;
int result = Age > stu.Age ? 0 : 1; //此处是降序排序,升序只需要把0和1调换即可
return result;
}
}