从foreach循环中设置字典值

时间:2013-12-06 16:05:15

标签: c#

道歉,如果这是重复的,但无法找到符合我需要的一切。我有一个对象,其中一个成员是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字段是只读的。

我确定我在这里不必要地感到困惑。任何建议赞赏

1 个答案:

答案 0 :(得分:3)

只是做:

values[current.index].MyTestValues[testCurrent.Key] = true;

它将更新现有值,如果key不存在,它将使用新密钥在字典中添加新项。