Linq To Xml - Неожиданные результаты поиска - PullRequest
0 голосов
/ 10 марта 2011

В тот момент, когда я думал, что у меня возникли подозрения в Linq To Xml, я столкнулся с еще одной ошибкой! Я думаю, что если бы я лучше разбирался в процессе поиска linq, я мог бы добиться большего успеха, поэтому любые хорошие ссылки по этому поводу также приветствуются. К моей проблеме однако; используя код ниже:

    Dim xd As XDocument = _
    <?xml version="1.0" encoding="utf-8"?>
    <root>
        <element>
            <subelement id="1"/>
            <subelement id="2"/>
            <subelement id="3"/>
        </element>
        <element>
            <subelement id="4"/>
            <subelement id="1"/>
            <subelement id="5"/>
        </element>
    </root>

    Dim results = _
    From q In xd.Descendants.<element> _
    Where q.<subelement>.@id = 1

    For Each xe As XElement In results
        Console.WriteLine(xe.ToString)
    Next

Я бы ожидал, что приведенный выше код возвратит оба узла 'element', но он возвращает только первый, потому что он ищет только первый узел 'subelement' в пределах 'element', как я могу применить предложение where ко всем ' подэлемент 'узлы?

1 Ответ

1 голос
/ 10 марта 2011

Вы могли бы сделать

Dim results = _
    From q In xd.Descendants.<element> _
    From p In q.<subelement> _
    Where p.@id = 1

(То есть, если мой VB.NET отвечает этой задаче ... Я мог бы сделать это в C #. Пожалуйста, не стесняйтесь редактировать.)

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