持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第2天,点击查看活动详情
前言:
list在我们编程的时候用的特别多,这是一个非常方便实用的类型,今天这篇文章我们来学习一下关于list排序,我们知道在数据结构中,我们学过很多排序,今天我们来学习一下C#写好的工具类,让我们实现排序,这篇文章我们就来一起学习一下吧,创作不易点赞关注评论收藏,你的点赞是我学习的动力,也是我创作的方向!!!
sort排序
直接用sort
sort这个方法是我们最常用的一个排序方法,它非常简单,我们在定义好list的赋好值的时候就可以,调用这个方法排序,是最简单的一种排序方法。 简单的代码逻辑:
List<int> list = new List<int>() { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
list.Reverse();// 反转顺序
list.Sort();// 升序排序
使用lambda表达式在sort排序
Lambda 表达式是一个匿名函数,Lambda 表达式基于数学中的λ演算得名,直接对应于其中的 lambda 抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。我们使用Lambda表达式结合sort也是可以排序的,"-"代表降序。
List<int> list = new List<int>() { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };。//定义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 Student: IComparable<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#的技术就是先简单再难嘛,积少成多之后才会成长才会进步,我们要不断的学习不断的探索,才能有学习的动力,才会有学习的欲望,创作不易,点赞评论收藏关注,嘿嘿,不喜勿喷!!!!