.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}");
        }
    }
}

上述代码中,我们首先创建了两个字典 dict1dict2。然后,我们调用 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}");
        }
    }
}

上述代码中,我们首先创建了两个字典 dict1dict2。然后,我们使用 Concat 方法将 dict1dict2 连接为一个键值对序列。最后,我们使用 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}");
        }
    }
}

上述代码中,我们首先创建了两个字典 dict1dict2。然后