代码之家  ›  专栏  ›  技术社区  ›  user2052637

使用LINQ选择具有不同名称的子节点

  •  0
  • user2052637  · 技术社区  · 13 年前

    我有这样一个XML:

    <root>
      <data>
       <_0>
        <value1></value1>
        <value2></value2>
       </_0>
       <_1>
        <value1></value1>
        <value2></value2>
       </_1>
     </data>
    </root>
    

    我想获取数据节点的所有子节点,并且当前正在使用:

    var descendants = from descendant in xdoc.Descendants("data")
                            select descendant;
    

    但返回的只是数据元素之间包含的所有文本。如何获取以不同名称(如_0、_1、_2等)开头的所有子体的列表。它们将始终是数据节点的直接子体,因此必须有一种方法来获取这些子体。任何帮助都将不胜感激,因为我没有和LINQ合作过太多。谢谢

    1 回复  |  直到 13 年前
        1
  •  0
  •   BeniBela    13 年前

    你可以使用Elements()来获取孩子。像这样,可能:

    var descendants = from descendant in xdoc.Descendants("data")
                            select descendant.Elements();
    

    尽管使用lambda语法而不是查询理解语法可能更干净:

    var descendants = xdoc.Descendants("data").Elements();