2011-09-05 56 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

謝謝艾哈邁德 - 工作就像一個魅力。榮譽給你 –