c# 对dictionary排序,分别对key和value排序
时间: 2024-09-14 15:14:34 浏览: 122
在C#中,可以使用LINQ(Language Integrated Query)来对`Dictionary<TKey, TValue>`类型的集合进行排序。以下是两个示例,分别展示了如何按照Key和Value进行排序:
1. 按照Key升序排序[^1]:
```csharp
Dictionary<char, int> dic = ... // 假设dic已填充
Dictionary<char, int> dicsort1 = dic.OrderBy(o => o.Key).ToDictionary(o => o.Key, p => p.Value);
```
2. 按照Key降序排序:
```csharp
Dictionary<char, int> dicsort2 = dic.OrderByDescending(o => o.Key).ToDictionary(o => o.Key, p => p.Value);
```
对于Value排序,通常情况下`Dictionary<TKey, TValue>`不支持直接按Value排序,因为它是无序的。如果需要,你可以先将它们转换成`List<(TKey, TValue)>`,然后按照Value进行排序:
```csharp
var keyValuePairs = dic.ToList();
keyValuePairs.Sort((x, y) => x.Value.CompareTo(y.Value));
Dictionary<char, int> sortedByValue = keyValuePairs.ToDictionary(p => p.Key, p => p.Value);
```
请注意,这会创建一个新的`Dictionary`,原始`dic`不会受到影响。
阅读全文