2010-10-15 171 views
1

我想根据嵌套元素的值在我的XML中选择一个元素。LINQ to XML - 基于嵌套元素值获取元素

这里是XML的例子:

<Agents> 
    <Agent ID="xxx"> 
     <Login>xxx</Login> 
     <Password>xxxx</Password> 
     <Products> 
      <Product ID="zzz"> 
      </Product> 
     </Products> 
    </Agent> 
</Agents> 

这是我在LINQ查询第一次尝试:

var DetailsOfUserAccount = 
    from agent in policySpecificationXml 
     .Descendants("Agent") 
     .FirstOrDefault(p => (string)p.Attribute("ID") == productId) 
     .Descendants() 
    select new 

感谢。

+0

你可以在你的问题更清楚了吗?你期待的结果是什么?如果您只是给我们第一次尝试而没有指明您尝试的是什么问题,我们该如何帮助您? – 2010-10-15 11:18:18

+0

对不起mastoj。基本上,如果我有很多代理节点,我想选择包含带产品ID的产品节点的代理,只使用产品ID进行搜索。 – FloatLeft 2010-10-16 07:49:14

回答

2

尚不完全清楚,但听起来好像要像...

var detailsOfUserAccount = policySpecificationXml 
    .Descendants("Agent") 
    .Where(agent => agent.Descandants("Product") 
         .Any(product => (string)product.Attribute("ID") 
              == productId)) 
    .FirstOrDefault(); 
+0

谢谢Timwi,那太好了。 – FloatLeft 2010-10-16 07:46:24