前言在最近的项目中经常会对C#中的数据进行排序,对于基本数据类型,其排序方式比较简单,只需要调用内置算法即可实现,但对于
自定义数据类型以及自定义排序规则的情况实现起来就比较麻烦,所以在本文章中将详细介绍一下在中C#中如何对数据进行排序。应用技术: LINQ; Array.Sort();
下面我们进行自定义数据进行排序,如下面代码所示,我们在此处定义了一个 Person类,并且继承了IComparable<Person>接口,该接口主要是用于后面调用Sort方法所必需的接口。
class Person : IComparable<Person>
{
public string name {
get; set; }
public int age {
get; set; }
public int id {
get; set; }
public int CompareTo(Person? other)
{
if (this.age > other.age) {
return 1; }
else {
return -1; }
}
public override string ToString()
{
return "(id: " + id + ", name: " + name + ", age: " + age + ")";
}
};
1. 使用Sort排序
对于自定义数据,我们可以使用Sort方法直接进行排序,默认是采用正序进行排序,此处提供了三种方式:
- 方式一:使用默认的
Sort()方法直接就可以进行排序,但是需要自定义数据继承IComparable<T>接口 - 方式二:使用
Sort()方法并添加回调函数,回调函数调用数据类型CompareTo()方法,该方法可以进行自定义。 - 方式三:使用
Sort()方法并添加回调函数,回调函数进行自定义,此处采用三目运算符写了个简单的方法,该方式无需继承继承IComparable<T>接口以及在自定义数据中添加比较函数。
代码如下所示:
static void test_person_sort()
{
List<Person> list = new List<Person>()
{
new Person(){
name="a",age=15,id=1 },
new Person(){
name="b",age=12,id=2 },
new Person(){
name="c",age=14,id=3 },
new Person(){
name="d",age=12,id=4 },
new Person(){
name="e",age=14,id=5 },
new Person(){
name="f",age=12,id=6 },
new Person(){
name="g",age=15,id=7 },
};
print_array(list);
// 1. 方式一
list.Sort();
// 2. 方式二
list.Sort((x, y) => x.CompareTo(y));
// 3. 方式三
list.Sort((x, y) => x.age > y.age ? 1 : -1);
print_array(list);
}
排序后结果输出为:

如果想进行逆序排序,需要修改一下比较规则
static void test_person_sort_()
{
List<Person> list = new List<Person>()
{
new Person(){
name="a",age=15,id=1 },
new Person(){
name="b",age=12,id=2 },
new Person(){
name="c",age=14,id=3

最低0.47元/天 解锁文章
315

被折叠的 条评论
为什么被折叠?



