我有一个字典 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方法的输出的组合列表设置值
答案 0 :(得分:3)
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>>
吗?然后,您可以直接对其进行修改。