2012-01-27 96 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"));