如何确定XElement.Elements()是否包含特定名称的节点?

30

例如以下XML示例:

 <Order>
  <Phone>1254</Phone>
  <City>City1</City>
  <State>State</State>
 </Order>

我想要查找XElement是否包含"City"节点。

3个回答

61

对于Elements,只需使用另一个重载即可。

bool hasCity = OrderXml.Elements("City").Any();

3
如果您不关心它在树中的位置,可以使用 Descendants("MyNode").Any()。 - jcollum
1
CS1061: 'System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement>' 不包含 'Any' 的定义。 - Alan Baljeu
1
@AlanBaljeu 在文件顶部添加 "using System.Linq"。这将允许使用扩展方法System.Linq.Enumerable.Any。 - Amy B

4

我已经有一段时间没有使用XLinq了,但是我会尽力给出我的猜测:

from x in XDocument
where x.Elements("City").Count > 0
select x

;


2

David 是最好的,但如果你需要一些自定义逻辑,可以编写自己的谓词 OrderXML.Elements("City").Exists(x=>x.Name =="City")


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接