如何正确执行Linq-to-XML查询?

时间:2014-04-28 17:39:47

标签: c# linq-to-xml

我有一个名为XDocument的{​​{1}}:

currentIndex

我会重新创建一个类似于上面的新<INDEX> <SUBINDEX> <!-- Many tag and infos --> <SUBINDEX> <ITEM> <IDITEM>1</IDITEM> <ITEM> <ITEM> <IDITEM>2</IDITEM> <ITEM> ... <ITEM> <IDITEM>n</IDITEM> <ITEM> </INDEX>

XDocument

我想在C#中这样做,我试过这样开始:

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

现在出现问题:如果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标记一个),但如果我删除该评论项目为空。为什么这样做。我需要如何进行搜索?

1 个答案:

答案 0 :(得分:3)

使用明确的演员:

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

a.Element("IDITEM")将返回XElement,它永远不会等于"2"。也许你的意思是a.Element("IDITEM").Value.Equals("2"),这也会有用,但显式演员会更安全。它不会如果元素没有找到,则抛出异常,