Siccome non posso rimuovere elementi da una collection mentre la sto scorrendo con un ciclo foreach, devo salvare gli elementi da eliminare in una lista temporanea e fare poi un altro ciclo, sulla lista temporanea, per rimuoverli:
IList<Child> childrenToDelete = new List<Child>();
foreach (Child child in Father.Children)
{
if (...)
childrenToDelete.Add(child);
}
foreach (Child child in childrenToDelete)
Father.Children.Remove(child);