/// где вы изменяете при перечислении
ли
foreach(T value in new List<T>(oldList) )
опасно (дорого), когда oldList содержит 1 миллион объектов T?
В общем, каков наилучший способ перечисления поверх oldList, учитывая, что элементы могут быть добавлены / удалены во время перечисления ...