Linq to XML问题:为什么我的查询不起作用

时间:2012-01-27 23:30:51

标签: c# xml linq-to-xml

在我的问题上,我在XElement中有以下XML。在完整的XML中可以有许多这些“标识符”节点,我的导航工作到此为止。

    <Identifiers>
      <identifier>
        <Type>MR</Type>
        <Value>123321</Value>
        <Authority></Authority>
      </identifier>
      <identifier>
        <Type>AN</Type>
        <Value>123321-01</Value>
        <Authority></Authority>
      </identifier>
      <identifier>
        <Type>PN</Type>
        <Value>123321</Value>
        <Authority></Authority>
      </identifier>
    </Identifiers>

这是Linq-To-XML:

    id = xd.Root.Element("Patient");
    id = id.Element("Identifiers"); //At this point "id" contains the above XML.
    id = id.Elements("Identifier").FirstOrDefault(x => x.Element("Type").Value == "AN");

它是崩溃的最后一个语句,并返回null。

我在这里缺少什么?

2 个答案:

答案 0 :(得分:6)

由于XML区分大小写,因此尝试使用“identifier”替换上一个语句中的“Identifier”。

答案 1 :(得分:1)

假设xd是你的XDocument,那么试试这个:

xd.Descendents("identifier").FirstOrDefault(x => x.Element("Type").Value == "AN");

事实上,如果您只希望在文档中输入单个“AN”值,那么您可以这样做:

 xd.Descendents("Type").FirstOrDefault(x => x.Value.Equals("AN"));

或者,如果您可能有许多值为“AN”的“类型”:

xd.Descendents("Type").Where(x => x.Value.Equals("AN"));