Linq to XML выбирает предков до 2 уровней - PullRequest
1 голос
/ 23 ноября 2011

Учитывая приведенный ниже XML-код, мне нужно повторно выбрать сотрудника, положение которого.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>

Ответы [ 2 ]

1 голос
/ 23 ноября 2011

В этом примере возвращается соответствующий сотрудник XElement или null, если ничего не найдено:

var employees = XElement.Parse(
    "<employees><employee><!-- ... --></employee></employees>");

var results = employees
    .Elements("employee")
    .Where(e => e.Descendants("manager_position").Value == "00008431")
    .SingleOrDefault();

См. Также:

1 голос
/ 23 ноября 2011

Вы можете сделать это так:

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

Выберите тех сотрудников, у которых есть хотя бы один элемент manager_position, который соответствует позиции, которую вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...