У меня есть словарь, в котором я хочу изменить ключ, удалив предыдущий и добавив новый, а затем повторив его снова и снова.Вот объявление словаря
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);
}
}
Когда я запускаю код, он говорит, что Коллекция была изменена, оператор перечисления может не выполняться.Как я могу это исправить или есть лучшее решение, чтобы сделать то же самое.