【发布时间】:2019-01-19 12:56:16
【问题描述】:
我有一本字典,我想通过删除前一个字典并添加一个新字典来修改其中的键,然后一次又一次地对其进行迭代。 这是字典的声明
Dictionary<string, List<Entity>> SuggestedDictionary = new Dictionary<string, List<Entity>>
并且:另一个字典是:
Dictionary<string, List<Entity>> CopyDataDict = new Dictionary<string, List<Entity>>
之后,我使用 Dict.Add() 在字典中填充数据。
List<Entity> list = db.books.ToList();
foreach(var l in list)
{
list.Add(l);
}
SuggestedDictionary.Add("Key", list);
CopyDataDict.Add("Key", list);
然后我遍历数据如下:
foreach (var entry in CopyDataDict.Values.ToList())
{
for (int i = 2; i < 15; i++) //just 14 items will be added
{
foreach (var container in SuggestedDictionary.Keys)
{
rec.Add(new Recommendations() { bookName = container, Rate = CalculatePearsonCorrelation(bkName, container) });
}
SuggestedDictionary.Remove(SuggestedDictionary.Keys.ToString());
if (!SuggestedDictionary.ContainsKey(entry[i].bookName))
{
SuggestedDictionary.Add(entry[i].bookName, list);
}
}
当我运行代码时,它说集合已被修改,枚举运算符可能无法执行。我该如何解决它,或者有更好的解决方案来做同样的事情。
【问题讨论】:
-
我认为这段代码不会抛出异常。我没有看到 foreach 循环的右括号,请提供该循环的完整代码
-
@mjwills 请查看编辑后的代码,它是最小的完整工作代码
-
我刚刚重新格式化了您的代码,因此很明显某处缺少
}。可以修改一下吗?
标签: c# dictionary collections key enumeration