2011-03-10 69 views
0

就在我想到Linq To Xml的时候,我还面临另一个错误!我想,如果我一般更好地理解linq搜索过程,我可能会获得更多成功,所以任何有关该链接的良好链接也是受欢迎的。然而,对我的问题,使用下面的代码:Linq To Xml - 意想不到的搜索结果

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>[email protected] = 1 

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

我本来期望上面的代码返回两个“元素”节点,但它只返回第一个,因为它仅搜索中“元素”第一个“子元素”节点,怎么能我使where子句适用于所有'子元素'节点?

回答

1

你可以做

Dim results = _ 
    From q In xd.Descendants.<element> _ 
    From p In q.<subelement> _ 
    Where [email protected] = 1 

(也就是说,如果我的VB.NET高达这里的任务...我能做到这一点在C#中,请随时编辑。)