Почему не удается удалить узел?

249
24 марта 2017, 21:56

Краткий смысл: Идут по XDocument в цикле, проверяю условие и если оно истинно, то удаляю узел:

        bool flag = false;
        var xDoc = XDocument.Parse(kvp.Value);
        var childs = xDoc.Root.Elements().ToList();
        for (int i = 0; i < childs.Count-1; i++)
        {
            if (childs[i].Attribute("id") == null) continue;
            if (!dict1.ContainsKey(int.Parse(childs[i].Attribute("id").Value)))
            {
                flag = true;
                childs[i].Remove();
                i--;
            }
        }

Ловлю такую ошибку на попытке удаления:

Additional information: Родительский элемент отсутствует.

Answer 1

Вам не нужно менять индекс, ведь вы не изменяете материализованную коллекцию childs.

Попробуйте так:

for (int i = 0; i < childs.Count; i++)
{
    if (childs[i].Attribute("id") == null) continue;
    if (!dict1.ContainsKey(int.Parse(childs[i].Attribute("id").Value)))
    {
        flag = true;
        childs[i].Remove();
    }
}
READ ALSO
Создание отчёта WinForm C#

Создание отчёта WinForm C#

Здравствуйте! При попытке создание отчёта с помощью запроса sql в ReportViewer ничего не отображаетсяКакие могут быть причины? Как можно заполнить...

379
c# WebSocketSharp отследить созданные вебсокеты

c# WebSocketSharp отследить созданные вебсокеты

Здравствуйте, подскажите, пожалуйста, как можно отследить вебсокет который я создаю с помощью websocketsharp?

290
Где найти практику?

Где найти практику?

Всем привет! Я знаю, что очень много информации по поводу практикиОтветов большинство на сайте "создай свой проект" и т

257
DateTime.ParseExact C#

DateTime.ParseExact C#

Не получается распарсить дату

268