C#中有多种方式对集合进行排序,常用的有两种:使用比较器和使用Lambda表达式。下面分别进行介绍。
使用比较器对集合进行排序
步骤一:定义比较器
要使用比较器对集合进行排序,首先需要定义一个比较器类。比较器类需要实现 IComparer<T>
接口中的 Compare()
方法,并将其实现成为自己想要排序的方式。以下为示例代码:
public class StudentSortByName : IComparer<Student>
{
public int Compare(Student x, Student y)
{
return string.Compare(x.Name, y.Name);
}
}
步骤二:使用比较器进行排序
有了比较器,就可以使用集合类的 Sort()
方法对集合进行排序了。以下为示例代码:
List<Student> students = new List<Student>();
students.Add(new Student() { Id = 1, Name = "Tom", Score = 90 });
students.Add(new Student() { Id = 2, Name = "Jane", Score = 80 });
students.Add(new Student() { Id = 3, Name = "Jim", Score = 70 });
students.Sort(new StudentSortByName());
在这个示例中,定义了一个 StudentSortByName
类作为比较器,然后将其传入 Sort()
方法中以对 List<Student>
进行排序。
使用Lambda表达式对集合进行排序
使用Lambda表达式对集合进行排序也很容易。以下是示例代码:
List<Student> students = new List<Student>();
students.Add(new Student() { Id = 1, Name = "Tom", Score = 90 });
students.Add(new Student() { Id = 2, Name = "Jane", Score = 80 });
students.Add(new Student() { Id = 3, Name = "Jim", Score = 70 });
students = students.OrderBy(s => s.Score).ToList();
在这个示例中,使用 OrderBy()
方法对 List<Student>
进行排序。其中 s => s.Score
就是 Lambda 表达式,表示按照 Score
属性进行排序。最后将排序后的结果重新赋值给原本的 List<Student>
对象。
示例说明
以下是两个使用上述方式排序的示例:
示例一
要求:请按照学生的分数从高到低对学生列表排序,并输出排序后的结果。
示例代码:
List<Student> students = new List<Student>();
students.Add(new Student() { Id = 1, Name = "Tom", Score = 90 });
students.Add(new Student() { Id = 2, Name = "Jane", Score = 80 });
students.Add(new Student() { Id = 3, Name = "Jim", Score = 70 });
students = students.OrderByDescending(s => s.Score).ToList();
foreach (var student in students)
{
Console.WriteLine("Id:{0}, Name:{1}, Score:{2}", student.Id, student.Name, student.Score);
}
运行结果:
Id:1, Name:Tom, Score:90
Id:2, Name:Jane, Score:80
Id:3, Name:Jim, Score:70
示例二
要求:请按照学生的姓名字典序从小到大对学生列表排序,并输出排序后的结果。
示例代码:
List<Student> students = new List<Student>();
students.Add(new Student() { Id = 1, Name = "Tom", Score = 90 });
students.Add(new Student() { Id = 2, Name = "Jane", Score = 80 });
students.Add(new Student() { Id = 3, Name = "Jim", Score = 70 });
students.Sort(new StudentSortByName());
foreach (var student in students)
{
Console.WriteLine("Id:{0}, Name:{1}, Score:{2}", student.Id, student.Name, student.Score);
}
运行结果:
Id:2, Name:Jane, Score:80
Id:3, Name:Jim, Score:70
Id:1, Name:Tom, Score:90
以上就是使用比较器和Lambda表达式对集合进行排序的完整攻略及示例说明,相信可以帮助你快速掌握排序方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#对集合进行排序 - Python技术站