【问题标题】:Update inner Dictionary as Value in outer Dictionary将内部字典更新为外部字典中的值
【发布时间】:2012-07-15 07:28:57
【问题描述】:
在这样的结构中:
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
}
如何做到这一点?
【问题讨论】:
标签:
c#
collections
.net-4.0
dictionary
foreach
【解决方案1】:
由于没有提供有关 myObject 或 secondObject 的详细信息,因此以下内容可能过于笼统,但至少可以让您有所了解:
foreach (var elem in myDict)
{
var temp = elem.Value.Single(p => p.Key == MyEnum.a);
(temp.Value as MySecondObject).anyProperty = anyValue;
}
【解决方案2】:
你很亲密,看来你只是对访问内部字典有些困惑?
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
}
}
}
【解决方案3】:
Dictionary 上的 foreach 循环枚举键值对。密钥在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);
}