如何遍历字典并向其值中添加项目

问题描述 投票:0回答:1

我有一个字典Dictionary>,该字典在其键上进行迭代,并希望向值中添加诸如SomeKindOfObject之类的更多项的集合。 AddRange不起作用-它不会更改该条目的值。查看我的代码(或多或少):

Dictionary<int, IEnumerable<SomeObject>> myDictionary = setDictionary(); //Assume that this method populate the dictionary.
IEnumerable<int> keys = myDictionary.Keys;
foreach (int key in keys)
{
  myDictionary[key].ToList().AddRange(getListOfSomeObject()); // getListOfSomeObject returns IEnumerable<SomeObject>  
  //Or even
  myDictionary[key].ToList().concat(getListOfSomeObject()); 

}

myDictionary值保持不变,我想使用AddRange方法,而不是使用原始值和getListOfSomeObject方法的输出的组合列表来设置值

c# linq dictionary linq-to-entities
1个回答
0
投票

ToList()将创建一个新列表。如果您对其进行修改,则不会更改Dictionary中存储的列表。再次将新创建的列表分配给Dictionary

Dictionary<int, IEnumerable<SomeObject>> myDictionary = setDictionary(); //Assume that this method populate the dictionary.
IEnumerable<int> keys = myDictionary.Keys;
foreach (int key in keys)
{
  var templist = myDictionary[key].ToList();
  templist.AddRange(getListOfSomeObject());
  myDictionary[key] = templist;

}

您可以将字典的类型更改为Dictionary<int,List<SomeObject>>吗?然后您可以直接对其进行修改。

© www.soinside.com 2019 - 2024. All rights reserved.