[英]C# LINQ XML filtering by attribute
我有以下XML:
<PlayerSetup>
<CardDeck name="deckOfCards"/>
<Card name="one"/>
<Card name="two"/>
<Card name="three"/>
<Card name="four"/>
<Token name="four"/>
</PlayerSetup>
我只需要檢索屬性名稱為“ four”的元素,我有以下代碼:
var query = from d in xdoc.Descendants("PlayerSetup")
where (string)d.Attribute("name").Value == "four"
select d;
當然哪個不起作用,則不返回任何元素。 任何想法 ? 謝謝。
如果您希望"PlayerSetup"
元素下的后代元素的名稱為“ four”,則可以執行以下操作:
var query = from d in xdoc.Descendants("PlayerSetup").Descendants()
where (string)d.Attribute("name") == "four"
select d;
如果希望"PlayerSetup"
元素至少具有一個名稱為“ four”的后代元素,則可以執行以下操作:
var query = from d in xdoc.Descendants("PlayerSetup")
where d.Descendants().Any(c => (string)c.Attribute("name") == "four")
select d;
你是想看看Descendants
的 PlayerSetup
,因此,抓住那些:
var query = from d in xdoc.Descendants("PlayerSetup").Descendants()
where d.Attribute("name")?.Value == "four"
select d;
//query.Count == 2
此解決方案使用C#6語法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.