c# 关于List排序学习

2,495 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第2天,点击查看活动详情

前言:

list在我们编程的时候用的特别多,这是一个非常方便实用的类型,今天这篇文章我们来学习一下关于list排序,我们知道在数据结构中,我们学过很多排序,今天我们来学习一下C#写好的工具类,让我们实现排序,这篇文章我们就来一起学习一下吧,创作不易点赞关注评论收藏,你的点赞是我学习的动力,也是我创作的方向!!!

12354689123110.gif

sort排序

直接用sort

sort这个方法是我们最常用的一个排序方法,它非常简单,我们在定义好list的赋好值的时候就可以,调用这个方法排序,是最简单的一种排序方法。 简单的代码逻辑:

List<int> list = new List<int>() { 0123456789 };
            list.Reverse();// 反转顺序          
            list.Sort();// 升序排序

使用lambda表达式在sort排序

Lambda 表达式是一个匿名函数,Lambda 表达式基于数学中的λ演算得名,直接对应于其中的 lambda 抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。我们使用Lambda表达式结合sort也是可以排序的,"-"代表降序。

List<int> list = new List<int>() { 0123456789 };。//定义list
            list.Sort((x, y) => -x.CompareTo(y));//降序,这种方式是使用lambda表达式
            list.Sort((x, y) => x.CompareTo(y));//升序

对于复杂对象排序

委托加sort的方式排序

对于复杂的类型我们也是可以排序的,我们的list定义的式Student类型,我们对于student的sno字段进行委托排序。

List<Student> list = new List<Student>();
            list.Sort(
                delegate (Student p1, Student p2)//委托
                 {
                     return p1.sno.CompareTo(p2.sno);//升序
                     //return p1.sno == p1.sno ? 0 : (p1.sno > p1.sno) ? 1 : -1;
                 });
            //list.Sort((x, y) => { return x.sno.CompareTo(y.sno); });

重写CompareTo实现排序

我们可以使用重写CompareTo的方式对list复杂类型的进行排序

public class StudentIComparable<Student>
{
    public int sno;
    public string name;

    public Student(int sno, string name)
    {
        this.sno = sno;
        this.name = name;
    }

    //重写的CompareTo方法,根据Id排序
    public int CompareTo(Student other)
    {
        if (null == other)
        {
            return 1;//空值比较大,返回1
        }
        //return this.Id.CompareTo(other.Id);//升序
        return other.sno.CompareTo(this.sno);//降序
    }
    public int Compare(Student x, Student y)
    {
        return x.sno.CompareTo(y.sno);//升序
    }
}

使用OrdeOrderBy排序

使用OrdeOrderBy排序需要和Sqlin结合,利用Sqlin查询对我们的定义的list进行排序操作。

Debug.Log("****升序序排列****");
        var tlist = list.OrderBy(t => t.sno).ToList();
Debug.Log("****降序排列****");
        var tlist = list.OrderByDescending(t => t.sno).ToList();

排序的方式有很多种,选择自己最喜欢的,最容易写出来的就可以了,一般我比较记得住sort,实在不行手写冒泡排序

总结:

这篇文章比较简单,只是简单的学习一下,等博主有时间了出一篇详细的保姆级文章,对它有更多的认识,在有需求的时候最起码有路子,虽然很简单,但是也是可以学到东西的,我们学习了新的知识,对我们的知识储备及技术又有新的一点点的进步,C#的技术就是先简单再难嘛,积少成多之后才会成长才会进步,我们要不断的学习不断的探索,才能有学习的动力,才会有学习的欲望,创作不易,点赞评论收藏关注,嘿嘿,不喜勿喷!!!!

1235468900