c# LINQ XML属性过滤
本文关键字:过滤 属性 XML LINQ | 更新日期: 2023-09-27 18:15:35
我有以下XML:
<PlayerSetup>
<CardDeck name="deckOfCards"/>
<Card name="one"/>
<Card name="two"/>
<Card name="three"/>
<Card name="four"/>
<Token name="four"/>
</PlayerSetup>
我只需要检索属性name="four"的元素,我有以下代码:
var query = from d in xdoc.Descendants("PlayerSetup")
where (string)d.Attribute("name").Value == "four"
select d;
当然不起作用,不返回任何元素。知道吗?谢谢。
如果您想要"PlayerSetup"
元素下的后代元素name="four",您可以这样做:
var query = from d in xdoc.Descendants("PlayerSetup").Descendants()
where (string)d.Attribute("name") == "four"
select d;
如果您希望"PlayerSetup"
元素至少有一个后代元素name="four",您可以这样做:
var query = from d in xdoc.Descendants("PlayerSetup")
where d.Descendants().Any(c => (string)c.Attribute("name") == "four")
select d;
您想要查看 PlayerSetup
的Descendants
,因此获取它们:
var query = from d in xdoc.Descendants("PlayerSetup").Descendants()
where d.Attribute("name")?.Value == "four"
select d;
//query.Count == 2
这个解决方案使用c# 6语法
我想你们的问题大家早就知道了。
你可以在这里找到它:LINQ到XML查询属性
或在这里:如何在c#中使用LINQ获取xml元素的属性名
:)