C#中对泛型集合元素使用List.Sort()方法排序

啊!终于整明白了!

今天拿出一点时间研究了一下C#的List如何排序,基本上整明白了。很多场景下,用这个排序还是很方便的。

C#中对泛型集合元素使用List.Sort()方法排序_第1张图片

//构造一个类   
 public class mth
    {
        //编号
        private string id;
        public string Id
        {
            get { return id; }
            set { id = value; }
        }

        //年龄
        private int age;
        public int Age
        {
            get { return age; }
            set { age = value; }
        }

        //薪水
        private int salary;
        public int Salary
        {
            get { return salary; }
            set { salary = value; }
        }
        
    }

//实例化3个对象
            mth m = new mth();
            m.Id = "1";
            m.Age = 35;
            m.Salary = 60000;

            mth n = new mth();
            n.Id = "2";
            n.Age = 33;
            n.Salary = 55000;

            mth p = new mth();
            p.Id = "3";
            p.Age = 25;
            p.Salary = 80000;

//创建一个mList集合,把上面3个对象放进去
            List mList = new List();
            mList.Add(m);
            mList.Add(n);
            mList.Add(p);

这时,如果我们想按年龄由低到高排序,就可以使用CompareTo()来操作,如下 

mList.Sort((x, y) => x.Age.CompareTo(y.Age));

排序后,再看看mList里面的样子:

foreach (mth mt in mList)
            {
                Console.WriteLine(mt.Id);
            }

C#中对泛型集合元素使用List.Sort()方法排序_第2张图片

这时,如果想按薪水由高到低排序(降序),那么,我们除了把Age换成Salary外,还需要在前面加个 - ,如下:

mList.Sort((x, y) => -x.Salary.CompareTo(y.Salary));

C#中对泛型集合元素使用List.Sort()方法排序_第3张图片

这时,如果再加入一个对象:

            mth boss = new mth();
            boss.Id = "4";
            boss.Age = 42;
            boss.Salary = 80000;

            mList.Add(boss);

PS: 没想到吧,boss的薪水竟然跟p的一样多~

boss说,按薪水从高到低的顺序排列,如果薪水一样,年龄大的在前,年龄小的在后

那么,我们可以这样排序:

mList.Sort((x, y) => -x.Salary.CompareTo(y.Salary)*2-x.Age.CompareTo(y.Age));

看到了没?权重大的可以在后面*n,这个n相当于一个权重系数,排序后看一下:

C#中对泛型集合元素使用List.Sort()方法排序_第4张图片

boss又说,年轻人更有活力,年龄大的放在后面吧,把年轻人放前面

那么,我们再改一下排序:

mList.Sort((x, y) => -x.Salary.CompareTo(y.Salary)*2+x.Age.CompareTo(y.Age));

C#中对泛型集合元素使用List.Sort()方法排序_第5张图片

看明白了吧?很简单,需要降序排列的,只需要在前面放个“-”,需要升序排列的,前面放个“+”

就这样,收工!

你可能感兴趣的:(CSharp,c#,开发语言,list)