2017-02-01 7 views
1

Если бы я был XMLDocument и хотел, например, подсчитать количество результатов узла я бы использовать что-то вродеUWP - XDocument эквивалент XmlNodeList

 //XmlNodeList CountResultsReturned = XMLSearch.SelectNodes("root/item"); 
     //if (CountResultsReturned.Count > 1) 
     //{} 

мне было интересно, как бы я achive что-то вроде этого, используя XDocument вместо этого.

ответ

3

В LINQ to XML нет определенного класса, который эквивалентен XmlNodeList, поскольку LINQ to XML просто работает с последовательностью узлов IEnumerable<XNode> или последовательностью элементов IEnumerable<XElement>. Когда вы выбираете некоторые узлы, он просто дает совпадающие узлы один за другим. Вы можете сохранить последовательность в списке или другой коллекции, если хотите. Например

var items = xdoc.Root.Elements("item").ToList(); 

Для вашего кода просто выбрать элементы и использовать LINQ Any() метод, чтобы проверить, существуют ли какие-либо элементы:

xdoc.Root.Elements("item").Any() 
// items.Any() 

Вы также можете использовать Count(), чтобы получить число элементов. Конечно XPath также

xdoc.XPathSelectElements("root/item").Count() 
// items.Count 
+1

Я пытаюсь преобразовать мое приложение UWP, и это действительно не нравится XML Я в настоящее время есть, я чувствую, что должен, возможно, сделать несколько больше читать на XDocuments. Использование вашего кода, похоже, делает то, что я так хотел, спасибо, и я отмечу это как ответ. – TLCONE

+0

@TLCONE LINQ to XML - хороший выбор. Я предлагаю вам прочитать некоторый учебник и/или попробовать его с помощью LINQ Pad. Существует вкладка * Samples *, где вы можете найти учебник по C# 6 LINQ to XML –

 Смежные вопросы

  • Нет связанных вопросов^_^