В принципе в чем затык мне понятно, при изменении коллекции все нормальные foreach или тп. отваливаются, тут либо while либо for с "фичей", к примеру можно так (пример удаление всех нечетных элементов списка):
Random rnd = new Random();
var s = new List<int>();
for (int i = 0; i < 20; i++)
{
s.Add(rnd.Next(10));
}
for (int i = 0; i < s.Count ; i++)
{
if (s[i]%2==0)
{
s.RemoveAt(i);
i--; //фишка в том чтобы сдвинуть i на единицу назад, т.к. после удаления следующий элемент будет на том же индексе что и старый (удаленный)
}
}
Console.WriteLine(s);