2012-07-16 32 views
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 
} 

如何做到这一点?

+0

你想怎么办? – Jon 2012-07-16 12:40:55

回答

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); 
} 
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 
     } 
    } 
} 
0

由于没有详细给出约myObject的或secondObject下面可能会过于宽泛,但至少可以给你一个想法:

foreach (var elem in myDict) 
{ 
    var temp = elem.Value.Single(p => p.Key == MyEnum.a); 
    (temp.Value as MySecondObject).anyProperty = anyValue; 
}