[英]How to correctly perform Linq-to-XML query?
我有一個名為currentIndex
的XDocument
像這樣:
<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.