道歉,如果这是重复的,但无法找到符合我需要的一切。我有一个对象,其中一个成员是Dictionary
对象,定义如下:
public class MyTestObject
{
public int index { get; set; }
// various other members here
public Dictionary<string, bool> MyTestValues { get; set; }
}
我有一个班级MyTestObject
列表:
List<MyTestObject> values = new List<MyTestObject>();
我有一个贯穿每个值的循环的循环和一个贯穿字典中KVP的子循环
foreach (MyTestObject current in values)
{
foreach (KeyValuePair<string, bool> testCurrent in current.MyTestValues)
{
}
}
在第二个循环中,我需要更改每个Dictionary项的布尔值,这就是我跌倒的地方。
理想情况下,我希望能够做类似以下的事情:
values[current.index].MyTestValues.Where(t => t.Key == testCurrent.Key).Single().Value = true;
即,它使用索引成员访问对象中的字段并更新值。不幸的是,这并不起作用,因为它说Value字段是只读的。
我确定我在这里不必要地感到困惑。任何建议赞赏
答案 0 :(得分:3)
只是做:
values[current.index].MyTestValues[testCurrent.Key] = true;
它将更新现有值,如果key
不存在,它将使用新密钥在字典中添加新项。