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
As any remove is taken on a condition you can use
list.RemoveAll(item => item.Value == someValue);