Как сказал Спендер, в вашем коде есть потенциальная проблема. Я называю это «условием гонки по индексу». После удаления последнего элемента что-то еще становится новым последним элементом. Это то, на что вы должны обратить внимание с помощью индексированных коллекций. Коллекции Кейда от этого не страдают.
В дополнение к тому, что другие говорили об использовании «RemoveRange» (если доступно) или LINQ, существует также вероятность того, что вы получили неправильный тип коллекции.
Очередь [T] и Stack [T] являются специализированными коллекциями для случаев «первым пришел», «первым вышел», «первым вышел», соответственно.