c#基础语法_集合中对象的动态排序

第一步: 给要比较的对象的类添加排序类, 有几种比较方式, 就添加几个排序类, 并且分别实现排序接口
class Student
    {
        public int StudentID { get; set; }
        public string StudentName { get; set; }

        public Student() { }

        public Student(int studentID, string studentName)
        {
            this.StudentID = studentID;
            this.StudentName = studentName;
        }
        显示实现接口
        //int IComparable<Student>.CompareTo(Student other)
        //{
        //    throw new NotImplementedException();
        //}
        //实现接口 //默认排序
        //public int CompareTo(Student other)
        //{
        //    return other.StudentID.CompareTo(this.StudentID);  //other在前面就是降序,this在前面就是升序
        //}
    }

    //添加4个排序类 并且分别实现排序接口
    //升序x在前面, 降序y在前面
    class StuNameASC : IComparer<Student>
    {
        public int Compare(Student x, Student y)
        {
            return x.StudentName.CompareTo(y.StudentName); //升序
        }
    }

    class StuNameDESC : IComparer<Student>
    {
        public int Compare(Student x, Student y)
        {
            return y.StudentName.CompareTo(x.StudentName); //升序

        }
    }

    class AgeASC : IComparer<Student>
    {
        public int Compare(Student x, Student y)
        {
            return x.StudentID.CompareTo(y.StudentID); //升序x在前,降序y在前
        }
    }

    class AgeDESC : IComparer<Student>
    {
        public int Compare(Student x, Student y)
        {
            return y.StudentID.CompareTo(x.StudentID);
        }
    }
第二步: 给要比较的Student集合执行Sort(), 参数为第一步中创建的排序类的对象
//创建几个学生对象
            Student stu1 = new Student() { StudentID = 1001, StudentName = "小米"};
            Student stu2 = new Student(1002, "雷军");
            Student stu3 = new Student(1003, "数据库");
            Student stu4 = new Student() { StudentID = 1004, StudentName = "苹果" };
            List<Student> studentList = new List<Student>() { stu1, stu2, stu3, stu4 };
//按照姓名升序排列
studentList.Sort(new StuNameASC());
//按照姓名降序
studentList.Sort(new StuNameDESC());
//按照学号升序
StudentList.Sort(new AgeASC());
//按照学号降序
StudentList.Sort(new AgeDESC());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值