что не так в этом запросе LINQ - PullRequest
       39

что не так в этом запросе LINQ

0 голосов
/ 01 декабря 2011

У меня есть следующий XML

<School Version="30">
    <Math>
        <Lesson1 Type="Active">Introduction</Reset_mode>
        <Lesson2 Type="Active">Fundamentals</Reset_mode>         
    </Math>
</School>

Я хочу получить урок подэлементов1, урок2

Я загружаю XML в XDocument

У меня вопрос - что не так в этом запросе

var nodes = from C in document.Element("School").Elements()
            where document.Element("School").Elements().Contains(t => t.Name == "Math")
            select C ; //shortcutsXMLDocument.SelectNodes(Query); 

и это повышение и ошибка.

Также можно ли использовать XPath с XDocument?

Ответы [ 4 ]

3 голосов
/ 01 декабря 2011

Вы ищете элемент ShortcutList:

Element("ShortcutList")

, которого не существует.

Вы должны написать это, чтобы получить подуровни:

var items = document.Element("School").Element("Math").Elements();

foreach(var item in items)
{
    DoSomething(item);
}
1 голос
/ 01 декабря 2011

LINQ to XML:

 from subject in XDocument.Load(xml).Element("School").Elemens()
 where subject.Name == "Math"
 select subject.Elements();

XPath с использованием XmlDocument:

var doc = new XmlDocument();
doc.LoadXml(xml);
var nodes = doc.SelectNodes("School/Math/Lesson1 or School/Math/Lesson2");
0 голосов
/ 07 декабря 2011

Регистр Xpath, используемый в XElement / XDocument из этого пространства имен System.Xml.XPath.

вот ваш запрос для пути ...

var node = from C в документе. XPathSelectElements ("./ Math") выберите C; //shortcutsXMLDocument.SelectNodes(Query);

0 голосов
/ 01 декабря 2011
document.Decendants("Math");

дает вам IEnumrable с двумя вашими элементами.это равно xpath // Math

...