In C#, a dictionary is a collection of key-value pairs, similar to a map or hash table in other programming languages. The key is used to look up the corresponding value in the dictionary. The dictionary in C# is implemented as a generic class called Dictionary<TKey, TValue>
, where TKey
is the data type of the key, and TValue
is the value's data type.
We'll now look at how to merge two dictionaries in C#.
Add()
methodOne way to merge two dictionaries in C# is by using the Add()
method. We can use the Add()
method to add the key-value pairs from one dictionary to another.
using System;using System.Collections.Generic;class Test{static void Main(string[] args){var dict1 = new Dictionary<string, int> {{ "A", 1 },{ "B", 2 }};var dict2 = new Dictionary<string, int> {{ "C", 3 },{ "D", 4 }};foreach (var kvp in dict2) {if (!dict1.ContainsKey(kvp.Key)) {dict1.Add(kvp.Key, kvp.Value);}}foreach (var kvp in dict1) {Console.WriteLine("{0}: {1}", kvp.Key, kvp.Value);}}}
Let's take a look at the explanation for the code:
Lines 8–11: We create our first dictionary, dict1
, containing key-value pairs of type string
and int
.
Lines 13–16: We create our second dictionary, dict2
, containing key-value pairs of type string
and int
.
Lines 18–22: We use a foreach
loop to iterate over dict2
and use the ContainsKey()
method to check if the key already exists in dict1
. If the key does not exist in dict1
, we use the Add()
method to add the key-value pair to dict1
.
Lines 24–26: We use a foreach
loop to iterate over dict1
and display its key-value pairs.
Note: In the code above, we ignore a key-value pair if the key already exists in
dict1
and avoid any overwriting.
Concat()
methodAnother way to merge two dictionaries in C# is by using the Concat()
method. This method is available in the System.Linq
namespace. Here's an example:
using System;using System.Collections.Generic;using System.Linq;class Test{static void Main(string[] args){var dict1 = new Dictionary<string, int> {{ "A", 1 },{ "B", 2 }};var dict2 = new Dictionary<string, int> {{ "C", 3 },{ "D", 4 }};var mergedDict = dict1.Concat(dict2).ToDictionary(x => x.Key, x => x.Value);foreach (var kvp in mergedDict) {Console.WriteLine("{0}: {1}", kvp.Key, kvp.Value);}}}
Lines 9–12: We create our first dictionary, dict1
, containing key-value pairs of type string
and int
.
Lines 14–17: We create our second dictionary, dict2
, containing key-value pairs of type string
and int
.
Line 19: We use the Concat()
method to merge two dictionaries, dict1
and dict2
. Then, we use the ToDictionary()
method to convert the result to a dictionary.
Lines 21–23: We use a foreach
loop to display the key-value pairs from the merged dictionary, mergedDict
.