Dictionary排序
时间: 2024-11-20 21:17:52 浏览: 5
C# Dictionary的遍历和排序
在C#中,`Dictionary<TKey, TValue>` 是一种键值对集合,它的元素不是有序的。如果你需要按照键或值进行排序,通常不直接支持这样的操作。然而,你可以通过将 `Dictionary` 的内容转换为 `List<T>` 或 `KeyValuePair<TKey, TValue>[]`,然后使用 LINQ(Language Integrated Query)来进行排序。
如果你想根据键(Key)进行排序:
```csharp
var dictionary = new Dictionary<string, int> { ... };
var sortedByKey = dictionary.OrderBy(pair => pair.Key);
```
如果你想根据值(Value)进行排序:
```csharp
var sortedByValue = dictionary.OrderByDescending(pair => pair.Value);
```
这里,`OrderBy` 和 `OrderByDescending` 方法会返回一个新的序列,原始的 `Dictionary` 不会被改变。
如果你需要保持原始数据结构不变并创建一个新的已排序的 `Dictionary`,可以这样做:
```csharp
var sortedDictByKey = dictionary.ToDictionary(
kvp => kvp.Key,
kvp => kvp.Value,
StringComparer.Ordinal); // 或者根据需要选择合适的比较器
sortedDictByKey = sortedDictByKey.OrderBy(kvp => kvp.Key).ToDictionary(dictionary);
```
但是请注意,这种方式创建的是一个新的 `Dictionary` 实例,而不是对原实例的排序。
阅读全文