我正在尝试选择2个标签中的所有对象,特别是<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()
但是从这里开始,但这引起了错误消息
答案 0 :(得分:1)
首先,您需要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;
答案 1 :(得分:1)
var test_var = from result in doc.Descendants("AR")
where result.Descendants("RL").Any(x => (int)x == 2)
select result;