.NET 多个字典合并为一个字典
在 .NET 中,字典(Dictionary
)是一种常用的数据结构,用于存储键值对。有时候,我们需要将多个字典合并为一个字典,以便更方便地进行操作和访问。本文将介绍如何使用 .NET 中的方法来完成这个任务,并提供相应的代码示例。
1. 使用 AddRange
方法
在 .NET 4.7.1 及更高版本中,Dictionary
类提供了 AddRange
方法,用于将一个字典中的键值对添加到另一个字典中。这个方法是最简单和方便的合并字典的方式。
下面是使用 AddRange
方法合并字典的示例代码:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
Dictionary<string, int> dict1 = new Dictionary<string, int>()
{
{ "apple", 1 },
{ "banana", 2 },
{ "orange", 3 }
};
Dictionary<string, int> dict2 = new Dictionary<string, int>()
{
{ "grape", 4 },
{ "peach", 5 }
};
dict1.AddRange(dict2);
foreach (var kvp in dict1)
{
Console.WriteLine($"{kvp.Key}: {kvp.Value}");
}
}
}
上述代码中,我们首先创建了两个字典 dict1
和 dict2
。然后,我们调用 dict1.AddRange(dict2)
将 dict2
中的键值对添加到 dict1
中。最后,我们遍历合并后的字典 dict1
,并输出每个键值对。
2. 使用 LINQ 的 Concat
方法
在 .NET 中,我们还可以使用 LINQ 的 Concat
方法来合并字典。Concat
方法可以将两个字典连接为一个包含所有键值对的序列,然后使用 ToDictionary
方法将序列转换为字典。
下面是使用 Concat
方法合并字典的示例代码:
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main()
{
Dictionary<string, int> dict1 = new Dictionary<string, int>()
{
{ "apple", 1 },
{ "banana", 2 },
{ "orange", 3 }
};
Dictionary<string, int> dict2 = new Dictionary<string, int>()
{
{ "grape", 4 },
{ "peach", 5 }
};
var mergedDict = dict1.Concat(dict2)
.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
foreach (var kvp in mergedDict)
{
Console.WriteLine($"{kvp.Key}: {kvp.Value}");
}
}
}
上述代码中,我们首先创建了两个字典 dict1
和 dict2
。然后,我们使用 Concat
方法将 dict1
和 dict2
连接为一个键值对序列。最后,我们使用 ToDictionary
方法将序列转换为字典,并存储在 mergedDict
中。我们再次遍历 mergedDict
,并输出每个键值对。
3. 使用 UnionWith
方法
在 .NET 3.5 及更高版本中,Dictionary
类提供了 UnionWith
方法,用于将一个字典与另一个字典合并。这个方法会将第二个字典中的键值对添加到第一个字典中,如果键已存在,则更新其对应的值。
下面是使用 UnionWith
方法合并字典的示例代码:
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
Dictionary<string, int> dict1 = new Dictionary<string, int>()
{
{ "apple", 1 },
{ "banana", 2 },
{ "orange", 3 }
};
Dictionary<string, int> dict2 = new Dictionary<string, int>()
{
{ "grape", 4 },
{ "peach", 5 }
};
foreach (var kvp in dict2)
{
dict1[kvp.Key] = kvp.Value;
}
foreach (var kvp in dict1)
{
Console.WriteLine($"{kvp.Key}: {kvp.Value}");
}
}
}
上述代码中,我们首先创建了两个字典 dict1
和 dict2
。然后