2011-09-05 67 views
1

我有以下列表Linq到XML - 无法删除节点

<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> 

我试图删除与ID = 1000 Car节点,但我不能得到正确

这里是我的代码,请注意,调试嗟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() 
+0

你试过e.Save() – Enes

+0

你需要修改'doc.Save()'后保存文件:) – Samich

+0

康拉德·多亏我有但不是问题 的LINQ查询返回一个IEnumerable ,不一个XElement和感谢艾哈迈德我现在知道这 –

回答

0

您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您可以使用,而不是寻找Inventory节点Root属性,即doc.Root...而不是doc.Elements("Inventory")...

+0

您仍然返回一个'IEnumerable'。使用'Single'扩展方法从该集合中获取第一个元素。 –

+0

谢谢艾哈迈德 - 工作就像一个魅力。荣誉给你 –