2011-02-28 26 views
0

Linq to Xml的新功能並且可以與它共同使用。Linq To Xml:是否有可能通過搜索添加內聯的XElement

我進行了很多類似下面的操作,我想知道,如果它在一個聲明是可能的:

Dim childXEl As XElement = _ 
    <ChildElement></ChildElement> 

    Dim results = _ 
    From parentXEl In xdoc.Descendants.<ParentXElement> 

    For Each xe As XElement In results 
     xe.Add(childXEl) 
    Next 

我懷疑這是可能的,但我很好奇地想知道,你可以添加搜索查詢中的xml,從而使每個循環不必要?

回答

1

嘛列表(Of T)已具有一個foreach方法是採取行動,你可以可以做的東西是這樣的:

Sub Main() 
    Dim doc As XDocument = _ 
    <?xml version="1.0"?> 
    <root> 
     <item> 
      <foo>1</foo> 
     </item> 
     <item> 
      <foo>2</foo> 
     </item> 
    </root> 

    doc.Root.<item>.ToList().ForEach(AddressOf Add) 
    doc.Save("output.xml") 
End Sub 

Sub Add(ByVal el As XElement) 
    el.Add(<bar>test</bar>) 
End Sub 
+0

啊這是prety整齊,只爲了我的問題是(雖然我沒有包括在我的例子)元素不會應用於每個項目;搜索聲明中會有'where'標準。儘管歡呼,這是知道的好東西! – baileyswalk 2011-02-28 12:43:07

+0

您可以將'ToList()。ForEach()'應用於任何'IEnumerable(Of T)'',所以當然首先使用'Where'來過濾是沒有問題的。 – 2011-02-28 14:00:36

+0

嗯...我無法弄清楚語法,有什麼機會可以幫助我?我知道這是錯誤的,但這是我得到的'Dim xe As XElement = _ insert Dim results = _ From item In doc.Descendants。 凡項目。 .Value = 1 _選擇item.DescendantsAndSelf.ToList.ForEach(AddressOf Add(item,xe))' – baileyswalk 2011-03-01 14:28:15