2

そのような構造では:

Dictionary<myObject, Dictionary<myEnum, secondObject>> myDict;

foreachは外側のすべてのアイテムを検索するために使用しますDictionary

foreach (var elem in myDict)
{
//I need to make some modifications in inner Dictionary for chosen myEnum
}

これを行う方法?

4

3 に答える 3

2

foreachループは、キーDictionaryと値のペアを列挙します。キーはにelem.Keyあります; 値(つまり、ターゲットの内部辞書)はelem.Valueです。

foreach (var elem in myDict)
{
    //I need to make some modifications in inner Dictionary for chosen myEnum
    Dictionary<myEnum, secondObject> inner = elem.Value;
    inner[myEnum.EnumVal1] = new secondObject(123);
    inner[myEnum.EnumVal2] = new secondObject(456);
}
于 2012-07-16T12:41:45.200 に答える
1

あなたは近くにいました、あなたは内側の辞書にアクセスすることについて少し混乱しているようですか?

foreach (var elem in myDict) // var is KeyValuePair<myObject, Dictionary<myEnum, secondObject>>
{
    var innerDict = elem.Value; // Value is Dictionary<myEnum, secondObject>

    if (innerDict != null)
    {
        if (innerDict.ContainsKey(enumVal)) // key is myEnum
        {
            var value = innerDict[enumVal]; // var is secondObject
        }
    }
}
于 2012-07-16T12:43:06.600 に答える
0

myObjectまたはsecondObjectに関する詳細が提供されていないため、以下は一般的すぎる可能性がありますが、少なくともアイデアが得られる可能性があります。

foreach (var elem in myDict)
{
    var temp = elem.Value.Single(p => p.Key == MyEnum.a);
    (temp.Value as MySecondObject).anyProperty = anyValue;
}
于 2012-07-16T12:45:54.083 に答える