使用C#LINQ在具有等于某个值的子节点的2个标记中进行选择
本文关键字:2个 选择 行选 子节点 使用 于某个 C#LINQ | 更新日期: 2023-09-27 18:25:34
我正在尝试选择两个标记中的所有对象,特别是<AR>
的标记,该标记包含一个元素,该元素是<AR>: <RL>
的后代,具有特定值,例如2。<RL>
可以隐藏在<AR>
的任意数量的级别内,但始终位于<AR>
内。我如何在LINQ中做到这一点?
EX1:
<ARS>
<AR>
<EI> </EI>
<RL>5</RL>
</AR>
<AR>
<EI> </EI>
<RL>2</RL>
</AR>
</ARS>
结果:
<AR>
<EI> </EI>
<RL>2</RL>
</AR>
我试过使用
IEnumerable<XNode> test_var = from result in doc.Descendants("AR")
where result.DescendantNodes()
但是从这里开始,但这抛出了一个错误消息
var test_var = from result in doc.Descendants("AR")
where result.Descendants("RL").Any(x => (int)x == 2)
select result;
第一个问题是需要一个select
语句,例如添加select result
。
此外,您的where
需要是布尔值。这听起来像是在寻找存在,这通常通过Any()
扩展方法来处理。
var searchString = "2";
IEnumerable<XElement> test_var = from result in doc.Descendants("AR")
where result.Descendants("RL").Any(xelm => xelm.Value == searchString)
select result;