2009-06-01 5 views
1

私はC#のSilverlightにロードされている次のXML文書があります。LINQ to XML:Silverlight C#での子供の選択を遅らせますか?

<parent> 
    <son name="Jim"> 
     <grandson>Billy</grandson> 
     <granddaughter>Sue</granddaughter> 
    </son> 
    <daughter name="Sally"> 
    </daughter> 
</parent> 

を私は親を照会するようにLINQクエリをしたいと「息子」と「娘」のノードのみの一覧を取得したいです。私が "息子"型のノードに到達したとき、私は自分の子供のために別の質問をしたい。

IEnumerable<XElement> Children = 
        from childNode in parents.Descendants() 
        select (XElement)childNode ; 

foreach(XElement childNode in Children){ 
// other code 
} 

をそれは私にすべてを(息子、娘、孫、孫娘)を与える:

私はこれを試してみました。

私は何をしたいのですが、このようなものです:だから基本的に、私は唯一のクエリで返された子どもたちの最初のレベルをしたい

foreach(XElement childNode in Children){ 
    switch(childNode.Name.ToString()){ 
     case "son": 
      // look for "grandson" and "granddaughter" as children of "son" now 
      break; 
     case "daughter": 
      // don't look for anything 
      break; 
     } 
    } 

、と私は、後に残りを照会します。

元のLINQクエリ、foreach条件、または何で行う必要があるかわかりません。私はXML文書フォーマットを制御できないので、それを何かに変更することはできません。ありがとう!

+0

を、私は、これはサンプルデータでない限り、私はすべて使用するので、私は、XMLのための異なるタグを使用すると思いますチェーンの途中で。 の要素か何かでなければならず、など – BerggreenDK

答えて

2

私はあなたがElements機能を使用する必要が正しくあなたの質問を理解していれば:

  var sons_qry = from son in parents.Elements() 
         select son; 

      var grandsons_qry = from grandson in sons_qry.Descendants() 
           select grandson; 
+0

が機能しました。正確に私が必要としたもの。ありがとうございました! – nerdabilly

関連する問題