I am looking for a better pattern for working with a list of elements which each need processed and then depending on the outcome are removed from
Reverse iteration should be the first thing to come to mind when you want to remove elements from a Collection while iterating over it.
Luckily, there is a more elegant solution than writing a for loop which involves needless typing and can be error prone.
ICollection test = new List(new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10});
foreach (int myInt in test.Reverse())
{
if (myInt % 2 == 0)
{
test.Remove(myInt);
}
}