C# LINQ 根据字典中的kay排序,并把每种key都赋值到新的字典或者集合
时间: 2024-03-13 20:45:01 浏览: 177
可以使用LINQ的OrderBy方法对字典中的key进行排序,然后使用ToDictionary方法将排序后的key和对应的value赋值到新的字典中。示例代码如下:
```csharp
// 原始字典
Dictionary<string, int> dict = new Dictionary<string, int>()
{
{ "apple", 3 },
{ "orange", 1 },
{ "banana", 2 }
};
// 按key排序并赋值到新的字典
Dictionary<string, int> sortedDict = dict.OrderBy(kv => kv.Key)
.ToDictionary(kv => kv.Key, kv => kv.Value);
// 输出新字典
foreach (var kv in sortedDict)
{
Console.WriteLine(kv.Key + ":" + kv.Value);
}
```
输出结果为:
```
apple:3
banana:2
orange:1
```
如果要将每种key都赋值到新的集合中,可以使用Distinct方法获取字典中不同的key,然后使用Select方法将每个key映射为新的对象,示例代码如下:
```csharp
// 原始字典
Dictionary<string, int> dict = new Dictionary<string, int>()
{
{ "apple", 3 },
{ "orange", 1 },
{ "banana", 2 },
{ "banana", 4 } // 字典中有重复的key
};
// 获取不同的key并赋值到新的集合
List<string> keyList = dict.Select(kv => kv.Key).Distinct().ToList();
// 输出新集合
foreach (var key in keyList)
{
Console.WriteLine(key);
}
```
输出结果为:
```
apple
orange
banana
```
阅读全文