📅  最后修改于: 2023-12-03 15:38:31.914000             🧑  作者: Mango
在C#中,List是一个非常常用的数据结构。有时候我们需要按照某个属性对List进行排序。这时候我们可以使用List.Sort()方法来实现。本文将介绍在C#中对列表进行排序 List.Sort()方法集。
List.Sort()方法可以根据指定的比较器对List中的元素进行排序。比较器是一个实现了IComparer接口的类或Lambda表达式。该方法执行的是就地排序,也就是说,排序后的元素在原有的List中。List.Sort()方法返回值为void。
我们假设有一个类Person,该类有Name、Age两个属性。我们希望对List中的Person对象按照Name属性进行升序排序。那么我们需要定义一个比较器,该比较器可以实现IComparer
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class PersonNameComparer : IComparer<Person>
{
public int Compare(Person x, Person y)
{
return x.Name.CompareTo(y.Name);
}
}
定义好比较器之后,我们可以使用List.Sort()方法对List
List<Person> persons = new List<Person>();
persons.Add(new Person { Name = "Tom", Age = 20 });
persons.Add(new Person { Name = "John", Age = 25 });
persons.Add(new Person { Name = "Mary", Age = 22 });
persons.Sort(new PersonNameComparer());
排序后的结果如下:
| Name | Age | | ---- | --- | | John | 25 | | Mary | 22 | | Tom | 20 |
除了定义一个实现了IComparer接口的比较器类外,我们还可以使用Lambda表达式来实现比较器。
继续以上述Person类为例,我们要对List
persons.Sort((x, y) => y.Age.CompareTo(x.Age));
排序后的结果如下:
| Name | Age | | ---- | --- | | John | 25 | | Mary | 22 | | Tom | 20 |
对于非基本类型,比如一个自定义的类Student,我们同样可以使用List.Sort()方法对其进行排序。只需要定义一个比较器来实现比较即可。
public class Student
{
public string Name { get; set; }
public int Age { get; set; }
public int Score { get; set; }
}
public class StudentScoreComparer : IComparer<Student>
{
public int Compare(Student x, Student y)
{
return y.Score.CompareTo(x.Score);
}
}
使用方式与前面的示例相同。
List<Student> students = new List<Student>();
students.Add(new Student { Name = "Tom", Age = 20, Score = 80 });
students.Add(new Student { Name = "John", Age = 25, Score = 90 });
students.Add(new Student { Name = "Mary", Age = 22, Score = 85 });
students.Sort(new StudentScoreComparer());
排序后的结果如下:
| Name | Age | Score | | ---- | --- | ----- | | John | 25 | 90 | | Mary | 22 | 85 | | Tom | 20 | 80 |
本文介绍了如何使用List.Sort()方法对列表进行排序,包括了对基本类型和自定义类型进行排序的示例。List.Sort()方法是C#提供的一个非常便捷的排序方法,灵活使用可以方便地对List进行排序。