2012-01-27 60 views
1

在我的问题上,我在XElement中有以下XML。在完整的XML中可以有许多这些“标识符”节点,并且我的导航正在处理这一点。Linq to 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到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。

缺少什么我在这里?

回答

6

由于XML我在大小写敏感的情况下,尝试用“标识符”替换上一条语句中的“标识符”。

+0

非常感谢您对助手的看法,我猜想我只是想要使用linq语法。男孩我感到愚蠢。 – dhamilton 2012-01-30 23:17:15

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"));