пункт linq where не дает ожидаемых результатов - PullRequest
0 голосов
/ 09 ноября 2011

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

<Root>
    <Result img="1.png" name="a">
        <Programs>
            <Program name="foo1">
                <ProgramID>1</ProgramID>
            </Program>
        </Programs>
    </Result>
    <Result img="2.png" name="b">
        <Programs>
            <Program name="foo1">
                <ProgramID>1</ProgramID>
            </Program>
            <Program name="foo2">
                <ProgramID>2</ProgramID>
            </Program>
        </Programs>
    </Result>
    <Result img="3.png" name="c">
        <Programs>
              <Program name="foo1">
                <ProgramID>1</ProgramID>
            </Program>
        </Programs>
    </Result>
    <Result img="4.png" name="d">
        <Programs>
             <Program name="foo1">
                <ProgramID>1</ProgramID>
            </Program>
        </Programs>
    </Result>
</Root>

Я пытаюсь отфильтровать xml по ProgramID с помощью оператора linq ниже, но я всегда не получаю результатов, когда передаю значение 2, как ни странно, когда я передаюПри значении 1 я получаю ожидаемые результаты, а это все четыре результата.

xOut = New XElement("Root", _
                                   From s In x...<Result> _
                                   Where s.<Programs>.<Program>.<ProgramID>.Value = 2 _
                                   Select s)

Что не так с запросом linq.Почему 1 работает, а 2 - нет?Также хотелось бы, чтобы после фильтрации структура XML сохранялась.

1 Ответ

1 голос
/ 09 ноября 2011

Вот как вы это сделаете в C #:

        var xOut = new XElement(
            "Root",
            x.Descendants("Result")
            .Where(y => y.Descendants("Programs").Descendants("Program").Descendants("ProgramID")
            .Any(z => z.Value == "2")));

Не уверен, каким будет эквивалент VB.NET, извините.

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