簡體   English   中英

如何正確執行Linq-to-XML查詢?

[英]How to correctly perform Linq-to-XML query?

我有一個名為currentIndexXDocument像這樣:

<INDEX>
   <SUBINDEX>
      <!-- Many tag and infos -->
   <SUBINDEX>
   <ITEM>
       <IDITEM>1</IDITEM>
   <ITEM>
   <ITEM>
       <IDITEM>2</IDITEM>
   <ITEM>
   ...
   <ITEM>
       <IDITEM>n</IDITEM>
   <ITEM>
</INDEX>

我將重新創建一個類似於上面的新XDocument

<INDEX>
   <SUBINDEX>
      <!-- Many tag and infos -->
   <SUBINDEX>
   <ITEM>
       <IDITEM>2</IDITEM>
   <ITEM>
</INDEX>

我想在C#中做到這一點,我嘗試過以這種方式開始:

public void ParseItems(XDocument items)
{
    IEnumerable<XElement> items = from a in indexGenerale.Descendants(XName.Get("ITEM"))
                                  // where a.Element("IDITEM").Equals("2")
                                  select a;
    foreach(var item in items) {
        // do something
    }
}

現在的問題是:如果注釋where子句,則items包含n元素(每個ITEM標記一個),但是如果我刪除該注釋,則項為空。 為什么這樣的行為。 我該如何執行搜索?

使用顯式強制轉換:

from a in indexGenerale.Descendants("ITEM")
where (string)a.Element("IDITEM") == "2"

a.Element("IDITEM")將返回一個XElement ,並且永遠不會等於"2" 。也許您是說a.Element("IDITEM").Value.Equals("2") ,它也可以工作,但顯式cast更安全。如果找不到元素,它不會引發異常,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM