Linq To Xml - 意外的搜索结果

时间:2011-03-10 19:04:19

标签: vb.net linq-to-xml

就在我以为我有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'节点,但它只返回第一个,因为它只搜索'element'中的第一个'subelement'节点,如何让where子句适用于所有'子元素'节点?

1 个答案:

答案 0 :(得分:1)

你可以做到

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

(也就是说,如果我的VB.NET完成了这里的任务......我可以用C#来完成。请随时编辑。)