Удаление XElements в цикле foreach

Я рекомендовал бы создать ключ во время выполнения, если это возможно. Таким образом, если ключ нужно было предчувствовать во время конкретной сессии, когда-то сессии, заканчивается, ключ будет бесполезен. Они могли все еще предчувствовать ключ из памяти, если бы они достаточно умны, но он не имел бы значения, так как ключ стал бы недопустимым после промежутка времени.

23
задан Vaccano 16 October 2009 в 19:45
поделиться

3 ответа

Я подозреваю, что 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();
    }
}
31
ответ дан 29 November 2019 в 02:28
поделиться

Создайте коллекцию перед логикой цикла, добавьте удаляемые элементы в новую коллекцию, затем вызовите items.Remove для каждого элемента в новой коллекции.

1
ответ дан 29 November 2019 в 02:28
поделиться

Попробуйте без for вместо foreach.

1
ответ дан 29 November 2019 в 02:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: