如何计算where子句中的子XElements

时间:2011-02-17 13:34:22

标签: xml linq linq-to-xml xelement

<Automobiles>
  <Cars>
    <YearofMfr></YearofMfr>
    <Mileage></Mileage>
    <MeterReading></MeterReading>
    <Color></Color>
    <Condition></Condition>
  </Cars>
  <Cars>
    <YearofMfr></YearofMfr>
    <Color></Color>
    <Condition></Condition>
  </Cars>
</Automobiles>

如何获得包含所有子元素的元素。详细解释。我有上面的xml。从这里我想要检索具有所有子节点的单个节点。如果您在第二个节点中看到某些信息丢失。我试过这样做。

var nodes = from nodeElements in doc.Descendants().FirstOrDefault().Elements()
                 where doc.Descendants().Count()==5
                select nodeElements;

我需要一个节点作为输出,它有5个子元素。

<Cars>     
<YearofMfr></YearofMfr>     
<Mileage></Mileage>     
<MeterReading></MeterReading>     
<Color></Color>     
<Condition></Condition>   
</Cars>

1 个答案:

答案 0 :(得分:5)

我建议您从nodeElements.Descendants中选择您的计数:

var nodes = (from nodeElements in doc.Root.Elements()
            where nodeElements.Descendants().Count()==5
            select nodeElements).FirstOrDefault();

已更新,以反映以下评论和对原始问题的评论。