-2

我正在尝试选择 2 个标签中的所有对象,特别<AR>是包含一个元素的后代,该元素<AR>: <RL>具有特定值,比如 2。<RL>可以在 's 内埋任意数量的级别<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()  

但是从这里开始,但这会引发错误消息

4

2 回答 2

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;
于 2013-07-29T20:31:02.980 回答
1
var test_var = from result in doc.Descendants("AR")
               where result.Descendants("RL").Any(x => (int)x == 2)
               select result;  
于 2013-07-29T20:31:30.353 回答