将新值添加到字典中,并将列表作为其值

时间:2017-02-12 14:29:24

标签: c# dictionary

我有一个这样的字典:

Dictionary<string,List<string>> StudentsByTeacherName = new Dictionary<string,List<string>>();

这个字典在一个循环中我希望字典值在每个循环中更新特定键。如果没有新的键添加到词典

foreach (var item5 in StudentsByTeacherName)
                {
                    if (StudentsByTeacherName.ContainsKey(item5.Key))
                    {

                    }
                    else
                    {
                        StudentsByTeacherName.Add(item4.Value,StudentName);
                    }

                }

3 个答案:

答案 0 :(得分:2)

  

我希望每个字段的特定键的字典值都会更新   环。如果没有新的键添加到词典

为此而不是检查ContainsKey,只需执行:

TeacherName[item3.Key] = yourStringList;

如果密钥不存在,索引器[]将更新现有密钥并插入。

答案 1 :(得分:1)

您无法更改属性或索引器值,因为这是只读的。你可以做的是通过索引访问它:

 foreach (var item5 in StudentsByTeacherName)
    {
      if (StudentsByTeacherName.ContainsKey(item5.Key))
         {
            //This will add new values on your list of string on specific 
            //keys and will not delete the existing ones:

            List<string> list = StudentsByTeacherName[item5.Key];
            list.Add("Your additional value here");
         }
         else
         {
            StudentsByTeacherName.Add(item4.Value,StudentName);
         }
    }

这将更新字符串列表的值,而不是密钥本身。

答案 2 :(得分:0)

试试这个。

foreach (var item5 in StudentsByTeacherName)
{
    if(item5.Value == null)
    {
        item5.Value = new List<String();
    }

    item5.Value[item4.Key] = item4.Value;
}

我假设item4是学生。这将替换现有值或添加新值。