次のように初期化する 2 つのオブジェクトがあります。
var series = new Dictionary<string,Dictionary<string,int>>()
{
{"0", new Dictionary<string, int>() },
{"1", new Dictionary<string, int>() },
{"2", new Dictionary<string, int>() }
}
var periodValues = new Dictionary<string,int>();
{
{"Jan", 0 },
{"Feb", 0 },
{"Mar", 0 }
}
次に、値が入力された別のオブジェクトがあります。
var target = new Dictionary<string,Dictionary<string,int>>()
{
{ "0",
new Dictionary<string, int>()
{
{"Jan", 12 },
{"Mar", 22 }
}
},
{ "1",
new Dictionary<string, int>()
{
{"Mar", 37 }
}
},
{ "2",
new Dictionary<string, int>()
{
{"Jan", 4 },
{"Feb", 48 },
{"Mar", 22 }
}
}
}
series
とtarget
常に同じ を持ちますが、Key
(target[key].Keys
タイプkey
をstring
使用して) 任意の は のサブセット(せいぜい同じ) にkey
することができます。periodValues.Keys
series.Values
ここで、のキーに従って入力したいのですperiodValues.Keys
が、の値を入力しますtarget[key].Value
。したがって:
foreach (var numberValue in target.Keys)
{
foreach (var period in target[numberValue].Keys)
{
periodValues[period] = target[numberValue][period];
}
series[numberValue] = periodValues;
}
しかし、私は外部変数トラップに陥ります...つまり、 all series[key]
for anyseries.Keys
は last に等しいperiodValues
. この記事に従って、外部変数トラップを回避するために多くの解決策を試しましたが、うまくいきませんでした。誰かが解決策やより良いアプローチを知っていますか?