Linq To XML - не удается удалить узел - PullRequest
1 голос
/ 05 сентября 2011

У меня есть следующий список

<Inventory>
  <Car ID="1000">
    <PetName>Jimbo</PetName>
    <Color>Red</Color>
    <Make>Ford</Make>
  </Car>
  <Car ID="1001">
    <PetName>Jimbo</PetName>
    <Color>Red</Color>
    <Make>Ford</Make>
  </Car>
</Inventory>

Я пытаюсь удалить узел Car с идентификатором = 1000, но не могу сделать это правильно

Вот мой кодобратите внимание, что отладчик никогда не нажимает e.Remove:

    Dim doc As XDocument = XDocument.Load("Test.xml")

    Dim e As XElement = From element
                        In doc.Elements("Inventory").Elements("Car")
                        Where element.Attribute("ID").Value = "1000"
                        Select element
    e.Remove()

1 Ответ

0 голосов
/ 05 сентября 2011

Ваш запрос LINQ возвращает IEnumerable<XElement>, а не один XElement. Попробуйте вместо этого:

Dim e = From element
        In doc.Root.Elements("Car")
        Where element.Attribute("ID").Value = "1000"
        Select element

e.Remove()

Если это не сработает, убедитесь, что у вас включена Option Infer для использования неявно типизированных переменных или измените инициализацию на Dim e As IEnumerable(Of XEelement) = ..., чтобы она была явной.

Поскольку вы используете XDocument, вы можете использовать свойство Root вместо поиска узла Inventory, то есть doc.Root... вместо doc.Elements("Inventory")....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...