0

私はC#にかなり慣れていないため、コレクションの問題に悩まされています。[(5, "abc"), (6, "def")] のようにいくつかの値を使用した辞書があります。メソッドを呼び出して、{"mno", "pqr"} のようなリストを取得します。ここで、辞書の値をリストの内容で更新したいと思います。問題は、マップのキーが任意の数字、たとえば 5 から始まる可能性があることです。しかし、新しいリストの開始インデックスは常に 0 であり、リストとマップの両方の長さは同じです...だから私はできますそうではありません: map[i] = list[i]、一致しないためです。誰かが辞書の内容をリストの内容に置き換える方法を教えてもらえますか? どうぞどうぞ!!!

4

2 に答える 2

1

単純な For ループ

for (int index = 0; index < map.Count; index++)
{
    map[map.ElementAt(index).Key] = list[index];
}

Linq の使用

var result  = map.Zip(list, (m, l) => new { Key = m.Key, Value = l })
                 .ToDictionary(p => p.Key, p => p.Value);
于 2013-07-27T03:19:46.620 に答える
0

Dictionary古いディクショナリと同じキーで新しいディクショナリを作成する LINQ を使用するメソッドを次に示しますが、値はリストから取得されます。

     map = map.Keys
              .OrderBy(k => k)
              .Zip(list, (k, v) => new KeyValuePair<int, string>(k, v))
              .ToDictionary(kvp => kvp.Key, kvp => kvp.Value);

Dictionary新しいものを作成する代わりに元のものを更新する必要がある場合は、次のようにします。

foreach (var kvp in map.Keys
                       .OrderBy(k => k)
                       .Zip(list, (k, v) => new KeyValuePair<int, string>(k, v)))
    map[kvp.Key] = kvp.Value;
于 2013-07-27T03:28:10.300 に答える