C#中List如何排序
时间: 2024-10-11 14:06:52 浏览: 26
算法 C#快速排序类
在C#中,`List<T>`是一个动态数组,可以存储任意类型的元素,并提供了内置的排序功能。要对List进行排序,你可以使用以下几种方法:
1. **OrderBy() 或 OrderByDescending()**:
- 如果你想按升序排序,使用 `list.OrderBy(ascendingComparator)`,其中`ascendingComparator`是一个Lambda表达式定义的比较函数。
- 如果想要降序排列,使用 `list.OrderByDescending(descendingComparator)`。
```csharp
List<int> numbers = new List<int>() { 5, 2, 8, 1 };
numbers.OrderBy(n => n).ToList(); // 升序排序
numbers.OrderByDescending(n => n).ToList(); // 降序排序
```
2. **Sort() 方法**:
- 对整个列表进行原地排序,适用于实现了`IComparable`接口的自定义类型。
```csharp
list.Sort(); // 默认升序,如果需要降序,传入Collections.ReverseComparer<T>()
```
3. ** LINQ 的 SortBy() 和 Reverse() **:
- 使用LINQ可以组合排序和反转操作,例如先排序再取反序。
```csharp
var sortedNumbers = list.OrderBy(n => n).Reverse();
```
4. **自定义排序方法**:
- 如果需要更复杂的排序规则,可以创建一个实现`IComparer<T>`或`Comparison<T>`的类或委托。
记得在使用之前先备份原始数据,因为上述方法可能会改变List的顺序。如果你只是想获取一个新的已排序序列,而不修改原有的List,可以使用`OrderBy()`或`Select()`配合`ToArray()`或`ToList()`等方法。
阅读全文