Por lo tanto, tienen un error de eliminarXElements retirar en un bucle foreach
foreach (XElement x in items.Elements("x"))
{
XElement result = webservice.method(x);
if (/*condition based on values in result*/)
{
x.Remove();
}
}
El problema es que llamar x.Remove() altera el foreach de tal manera que si hay dos elementos ("x"), y el primero se elimina, el ciclo no llega al segundo elemento x.
Entonces, ¿cómo debería estar bucleando esto? ¿O debería ser reescrito de otra manera?
De hecho, me acaban de modificación del foreach para ser "foreach (x XElement en items.Elements (" x "). Reverse())", y que parece funcionar muy bien como el problema antes era el foreach trasladó la index up, y Remove eliminó todo, causando saltos de elementos. Invertir el orden parece tener sentido. Pero dejaré la pregunta abierta en caso de que alguien tenga una mejor solución. – CaffGeek
Hice un bucle for donde tuve que hacer un i-- si realmente eliminó un elemento para compensar el índice. Tu camino con el reverso tampoco parece una mala opción, pero no soy un experto en .NET, así que soy un poco escéptico de lo que digo, jaja. – Xaisoft
retenido a C# 3.0. No hay C# con la versión 3.5 (consulte esta publicación para obtener detalles http://stackoverflow.com/questions/247621/what-are-the-correct-version-numbers-for-c) – Vaccano