【问题标题】:Linq to XML select ancestors up to 2 levelsLinq to XML 选择最多 2 个级别的祖先
【发布时间】:2011-11-23 12:48:45
【问题描述】:

鉴于下面的 XML,我需要递归地选择 position.position.manager_position 与职位参数匹配的员工。

如何使用 linq to XML 实现这一点?

<employee id="0004000">
    <!-- ... -->
</employee>
<employee id="0004001">
     <username>Administrator</username>
     <positions>
      <position id="00008001" isPrimary="1">
       <title>GENERAL MANAGER</title>
       <manager_position>00008431</manager_position>
      </position>
     </positions>
</employee>
<employee id="0004002">
    <!-- ... -->
</employee>

【问题讨论】:

    标签: .net linq linq-to-xml


    【解决方案1】:

    你可以这样做:

    employees.Where(e => e.Element("positions")
                          .Elements("position")
                          .Elements("manager_position")
                          .Any(mp => mp.Value == position))
    

    选择至少有一个manager_position 元素与您要查找的职位相匹配的员工。

    【讨论】:

      【解决方案2】:

      此示例将在未找到匹配的员工 XElementnull 时返回:

      var employees = XElement.Parse(
          "<employees><employee><!-- ... --></employee></employees>");
      
      var results = employees
          .Elements("employee")
          .Where(e => e.Descendants("manager_position").Value == "00008431")
          .SingleOrDefault();
      

      另请参阅:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-03-11
        • 1970-01-01
        • 1970-01-01
        • 2023-01-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多