Te traemos la solución a esta aprieto, o por lo menos eso pensamos. Si presentas preguntas puedes escribirlo en el apartado de preguntas y con gusto te ayudaremos
Solución:
Puedes probar este enfoque:
var nodes = xRelation.Elements().Where(x => x.Element("Conditions") != null).ToList();
foreach(var node in nodes)
node.Remove();
Idea básica: no puede eliminar elementos de la colección que está iterando actualmente.
Entonces, primero debe crear una lista de nodos para eliminar y luego eliminar estos nodos.
Puedes usar Linq:
xRelation.Elements()
.Where(el => el.Elements("Conditions") == null)
.Remove();
O cree una copia de los nodos para eliminar y elimínelos después (en caso de que el primer método no funcione):
List nodesToDelete = xRelation.Elements().Where(el => el.Elements("Conditions") == null).ToList();
foreach (XElement el in nodesToDeletes)
// Removes from its parent, but not nodesToDelete, so we can use foreach here
el.Remove();
He hecho un pequeño ejemplo para ti:
XDocument document = XDocument.Parse(GetXml());
var rulesNode = document.Element("Rules");
if (rulesNode != null)
rulesNode.Elements("Rule").Where(r => r.Element("Conditions") != null).Remove();
Reseñas y valoraciones
Si piensas que te ha resultado provechoso este artículo, sería de mucha ayuda si lo compartieras con el resto desarrolladores así nos ayudas a difundir nuestra información.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)