C#で辞書(Dictionary)に結合する2つの方法!

C# C#

C#の辞書(Dictionary)を結合する方法について書いています。
Linqを使って結合するか、Addメソッドを使って結合したように振る舞うことができます。

載せているコードについては、.Netのバージョン6(C#のバージョン10)で確認しました。

辞書を結合する方法

辞書を結合するには、Linqを使うと良いです。
また、Addメソッドを使って、片方の辞書に追加して結合したように振る舞うこともできます。

辞書をLinqを使って結合する

辞書をLinqを使うと、下記のようにして結合することができます。

var fruits1 = new Dictionary<string, int>();
fruits1.Add("apple", 110);
fruits1.Add("banana", 140);
fruits1.Add("grape", 130);

var fruits2 = new Dictionary<string, int>();
fruits2.Add("lemon", 180);
fruits2.Add("peach", 190);

var fruits = fruits1
            .Concat(fruits2)
            .ToDictionary(x => x.Key, x => x.Value);

foreach (var fruit in fruits) {
    Console.WriteLine($"{fruit.Key}は{fruit.Value}円です。");
}

最初にfruits1変数に対して、辞書オブジェクトを作成して、3つのキーと値を入れています。
次に同じようにfruits2変数に対して、2つのキーと値で辞書オブジェクトを作成しました。

そしてfruits1変数からConcatメソッドを呼び出して、fruits2変数を渡しています。
さらにToDictionaryメソッドを使うことで、辞書に変換して返しています。

結果をfruits変数で受け取って出力すると、下記のように結合されたことが確認できました。

appleは110円です。
bananaは140円です。
grapeは130円です。
lemonは180円です。
peachは190円です。

辞書をAddメソッドを使って結合する

辞書オブジェクトからAddメソッドを使って、片方の辞書オブジェクトに値を追加することで結合したように振る舞えます。
例えば、下記のように使うことができます。

var drinks1 = new Dictionary<string, int>();
drinks1.Add("water", 110);
drinks1.Add("cola", 120);
drinks1.Add("milk", 100);

var drinks2 = new Dictionary<string, int>();
drinks2.Add("beer", 480);
drinks2.Add("coffee", 280);

foreach (var drink2 in drinks2) {
    drinks1.Add(drink2.Key, drink2.Value);
}

foreach (var drink in drinks1) {
    Console.WriteLine($"{drink.Key}は{drink.Value}円です。");
}

まずdrinks1変数に対して、辞書オブジェクトを作成して、3つのキーと値を入れています。
同様にしてdrinks2変数に対して、辞書オブジェクトを作成して、2つのキーと値を入れました。

次の処理で、foreachでdrinks2変数をループ処理しています。
drink2変数には、drinks2変数の辞書のオブジェクトがループ毎に設定されます。

ループの中で、drinks1変数に対して、Addメソッドを使ってdrinks2変数の「キーと値」を追加しています。
このように、ループを回してひとつずつ追加することもできるかと思います。
ここではやっていませんが、重複はチェックするかTryAddメソッドを使ったりした方が良いかもしれません。

最後のforeachでは、drinks1変数をループして、辞書に「キーと値」が追加されたか確認しています。
出力結果を確認すると、下記のように追加されたことが確認できました。

waterは110円です。
colaは120円です。
milkは100円です。
beerは480円です。
coffeeは280円です。

辞書を結合する方法のまとめ

今回はC#の辞書を結合する方法について書きました。
記事の内容をまとめると、下記のようになります。

・Linqを使って、ConcatメソッドとToDictionaryメソッドを呼ぶことで結合できた。
・Addメソッドを使うことでも、結合したように振る舞うことができた。

コメント

タイトルとURLをコピーしました