LinQ to XML;запросить потомков, используя значение родительского узла - PullRequest
1 голос
/ 15 ноября 2010

Привет, у меня есть следующая структура XML:

<Root>
 <Persons>
  <PersonList Category="Employee">
   <Person Name="John" Id="5" />
   <Person Name="Mary" Id="10" />
  </PersonList>
 </Persons>
</Root>

Я хочу использовать LinqtoXML и для получения списка доступных людей, я могу просто написать этот запрос:

var persons = from p in myDoc.Descendants("Person")
select p;

Теперь, что мне нужно сделать, чтобы получить всю персону , где Категория в элементе PersonList = для определенного значения? Я не могу использовать Parent , потому что мне нужно указать элемент PersonList , поскольку структура XML может отличаться от этой, но не имя элемента. Возможно ли это?

1 Ответ

2 голосов
/ 15 ноября 2010

Звучит так, как будто вы ищете

var people = myDoc.Descendants("PersonList")
                  .Where(p => p.Attribute("Category").Value == something)
                  .Descendants("Person");

Если вы хотите получить категорию определенного элемента <Person>, вы можете написать

var category = elem.AncestorsAndSelf("PersonList")
                   .First().Attribute("Category").Value;
...