Ответ 1
Я подозреваю, что Linq может помочь вам здесь следующим образом.
using System.Linq;
void foo()
{
items.Elements("x")
.Where(x => condition(webservice.method(x)))
.Remove();
}
Если это не работает (т.е. внутренний счетчик по-прежнему недействителен), сделайте мелкую копию выбранных элементов и удалите их следующим образом.
using System.Linq;
void foo()
{
List xElements = items.Elements("x")
.Where(x => condition(webservice.method(x)))
.ToList();
for (int i = xElements.Count - 1; i > -1; i--)
{
xElements[i].Remove();
}
}