Предполагая, что у вас есть List<T>
, один эффективный способ - это перебирать список в обратном порядке, удаляя элементы по ходу:
for(int i = myList.Count-1; i--; i>=0)
{
if (ShouldBeRemoved(myList[i]))
{
myList.RemoveAt(i);
}
}
Если вместо этого у вас есть IEnumerable<T>
, это становится сложнее, так как вы не можете изменить список во время итерации.