Итак, у меня есть ошибка, чтобы удалитьУдаление XElements в цикле Еогеасп
foreach (XElement x in items.Elements("x"))
{
XElement result = webservice.method(x);
if (/*condition based on values in result*/)
{
x.Remove();
}
}
Проблема заключается в том, что вызов x.Remove() изменяет Еогеасп таким образом, что если есть два элемента («х»), и первый удаляется, цикл не попадает во второй элемент x.
Итак, как я должен зацикливать это? Или это должно быть переписано другим способом?
Я на самом деле просто модифицировали Еогеасп быть «Еогеасп (XElement х в items.Elements (» х «). Reverse())» и это, кажется, работает хорошо, как проблема, прежде чем была Еогеасп перемещена индекс вверх, а «Удалить» сдвинул все вниз, в результате чего элементы были пропущены. Кажется, что изменение порядка выглядит. Но я оставлю вопрос открытым, если у кого-то есть лучшее решение. – CaffGeek
Я сделал цикл for, где мне пришлось сделать i - если бы он фактически удалил элемент, чтобы компенсировать индекс. Твой путь с обратным не похож на плохой вариант, хотя, но я не эксперт .NET, поэтому я немного скептически отношусь к тому, что я говорю, lol. – Xaisoft
сохранен в C# 3.0. Нет C# с версией 3.5 (см. Это сообщение для деталей http://stackoverflow.com/questions/247621/what-are-the-correct-version-numbers-for-c) – Vaccano