Linq to XML, найти элементы, которые находятся в определенной категории - PullRequest
2 голосов
/ 05 января 2011

У меня есть следующая XML-структура (из внешнего источника, которая не очень хорошо выполнена):

<items>
 <item>
   <allkindsofinfo></allkindsofinfo>
   <categories>
    <category>
     <name>cat1</name>
    </category>
    <category>
     <name>cat2</name>
    </category>
    <category>
     <name>cat3</name>
    </category>
   </categories>
  </item>
 <item>
  etcetera

Есть около 150 элементов, которые содержат пару категорий.

Теперь, используя linq, я хочу получить все элементы, относящиеся к определенной категории.Я попробовал следующее в предложении where:

item.Element("categories").Elements("category").Elements("name").ToString().Contains("cat2")

Это не возвращает никаких результатов, даже если я знаю, что должно.

Если я попытаюсь:

item.Element("categories").Element("category").Element("name").ToString().Contains("cat2")

возвращает результаты, если имя категории является первым в элементе.

Как я могу просмотреть имена категорий каждого элемента, чтобы увидеть, содержит ли оно определенную строку, и отфильтровать эти элементы?

Любая помощь очень ценится ...: -)

1 Ответ

1 голос
/ 05 января 2011

where item.Element("categories").Elements("category").Elements("name").Any(n => n.Value = "cat2") следует делать, если предполагается, что значение элемента name точно равно cat2. Или используйте where item.Element("categories").Elements("category").Elements("name").Any(n => n.Contains("cat2")), если элемент name должен содержать "cat2" в качестве подстроки.

...