使用 LINQ 选择具有不同名称的后代节点
Posted
技术标签:
【中文标题】使用 LINQ 选择具有不同名称的后代节点【英文标题】:Select descendant nodes that have different names using LINQ 【发布时间】:2013-03-02 00:16:12 【问题描述】:我有一个这样的 XML:
<root>
<data>
<_0>
<value1></value1>
<value2></value2>
</_0>
<_1>
<value1></value1>
<value2></value2>
</_1>
</data>
</root>
我想获取数据节点的所有后代并且当前正在使用:
var descendants = from descendant in xdoc.Descendants("data")
select descendant;
但返回的只是数据元素之间包含的所有文本。如何获取以不同名称(如 _0、_1、_2 等)开头的所有后代的列表。它们将始终是数据节点的直接后代,因此必须有一种方法来获取这些后代。任何帮助将不胜感激,因为我对 LINQ 的工作不多。谢谢
【问题讨论】:
【参考方案1】:你可以 Elements() 来获取孩子。像这样,大概:
var descendants = from descendant in xdoc.Descendants("data")
select descendant.Elements();
虽然使用 lambda 语法而不是查询理解语法可能更简洁:
var descendants = xdoc.Descendants("data").Elements();
【讨论】:
以上是关于使用 LINQ 选择具有不同名称的后代节点的主要内容,如果未能解决你的问题,请参考以下文章