5

重複するエントリを削除して 2 つの辞書を 1 つの辞書にマージし、最初の辞書に存在しない場合は追加する必要があります。

 Dictionary<int, string> firstDict = new Dictionary<int, string>();
 firstDict.Add(1, "X");
 firstDict.Add(2, "B");

 Dictionary<int, string> secondDict = new Dictionary<int, string>();
 secondDict.Add(1, "M");
 secondDict.Add(4, "A");

結果は次のようになります。

{4, "A"}
{2, "B"}
{1, "X"}
4

6 に答える 6

6

サンプル LINQ で Concat を使用して、目的を達成できます。ここにあります:

Dictionary<int, string> result = 
   firstDict.Concat(secondDict.Where(kvp => !firstDict.ContainsKey(kvp.Key)))
            .OrderBy(c=>c.Value)
            .ToDictionary(c => c.Key, c => c.Value);

結果は次のとおりです。

{4, "A"}
{2, "B"}
{1, "X"}
于 2013-08-08T10:30:44.317 に答える
0

よくわかりません。両方をマージしますか? もしそうなら、あなたはただできますか:

1位。最終結果が設定される firstDict のコピーを作成します。

2番目。secondDict の各キーについて:

1. Check if key exists in firstDict.

1.1. If it does exist(we want to keep the current result): do not do anything(sorry I miss read the result earlier)

1.2. If it doesn't exist then insert it as is(key-value from secondDict into firstDict)

うまくいけば、それは役に立ちます!

于 2013-08-08T10:27:55.073 に答える