我有一个字典如下 -
Dictionary<string, Dictionary<int, int>> myDict1;
我有另一个与 myDict1 签名相同的字典 myDict2 。
myDict1 和 myDict2 具有相同的值。 例如 -
{"Data1", {1 , 0}};
操作 myDict2 后更新(或更好地说我接收myDict2作为操作的返回值)并且它包含如下所示的值 -
{"Data1", {1 , 10}};
我必须通过匹配 myDict2 的键来更新 myDict1 。 这里的键是字符串&#34; Data1&#34; 和int 1 。
注意:此处只有内部词典的值会发生变化。
有人可以建议如何以更好的方式做到这一点吗?
答案 0 :(得分:1)
试试这个:
//sample data
Dictionary<string, Dictionary<int, int>> myDict1 = new Dictionary<string, Dictionary<int, int>>();
myDict1.Add("data1", new Dictionary<int, int> { { 1, 0 }, { 2, 0 }, { 3, 0 } });
myDict1.Add("data10", new Dictionary<int, int> { { 2, 10 }, { 3, 11 }, { 4, 0 } });
Dictionary<string, Dictionary<int, int>> myDict2 = new Dictionary<string, Dictionary<int, int>>();
myDict2.Add("data1", new Dictionary<int, int> { { 1, 1 }, {3, 1 }, { 4, 1 } });
myDict2.Add("data2", new Dictionary<int, int> { { 2, 0 } });
//here we will iterate only through common keys (that both dictionaries have it)
foreach(string commonKey in myDict1.Keys.Intersect(myDict2.Keys))
foreach(int intKey in myDict1[commonKey].Keys.Intersect(myDict2[commonKey].Keys))
myDict2[commonKey][intKey] = myDict1[commonKey][intKey];