C#中List的排序

前些天写程序时遇到这样一个问题:在一个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;
            }
        }

 






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值