Я знаю, что это вообще большое Нет-Нет для изменения коллекции, через которую вы перебираете, но, к сожалению, я не разработал код, который пытаюсь изменить. Повсюду делается следующее:
for each log in Logs
logs.Delete(log.LogId)
Next
Удалить в значительной степени просто удаляет журнал из базы данных и удаляет его из коллекции. Ранее объект Logs использовал неуниверсальную коллекцию. Я изменил его, чтобы использовать коллекцию (журнала), чтобы я мог LINQify объекта. Теперь каждый раз, когда я вызываю next / .MoveNext вызывается после первого удаления, происходит следующая ошибка:
InvalidOperationException:
"Коллекция была изменена; операция перечисления может не выполняться."
Я понимаю, почему я получаю ошибку, но я не понимаю, почему это никогда не происходило с неуниверсальной версией. Есть ли способ обойти эту ошибку? Там действительно нет никакого способа, которым я могу потратить время, чтобы изменить каждое место, где удаляются журналы, как это (кодовая база велика). Я хотел бы просто удалить код в функции Delete, где он удаляет его из текущей коллекции, потому что я предполагаю, что ни один код ничего не делает с коллекцией после ее завершения, но вы знаете, что происходит, когда вы предполагаете.