2016-04-27 8 views
1

私はすべてのフープ属性を取得しようとしていますが、最初の値を取得するだけです(この例ではリストボックスに24と4を追加しています)。すべての結果をリストに追加する方法はありますか?私は通常、ToList()を使用しますが、この瞬間には機能しませんでした。目的は、ホームと離れて別のものにフープを取得し、それをオブジェクトに格納することでした。複数のlet linqをxmlに取得する方法#

XML:

<League> 
    <Round> 
    <Match> 
     <Team Side="Home" > 
     <Hoop qtr="1st" player-name="Joe" time-scored="24" /> 
     <Hoop qtr="1st" player-name="Jack" time-scored="54" /> 
     </Team> 
     <Team Side="Away"> 
     <Hoop qtr="1st" player-name="James" time-scored="4" /> 
     <Hoop qtr="1st" player-name="Brown" time-scored="34" /> 
     </Team> 
    </Match> 
    </Round> 
</League>  

のC#:

XDocument xDoc = XDocument.Load("test.xml"); 
var query = from q in xDoc.Descendants("Team") 
      where (string)q.Attribute("Side") == "Home" 
      let d = q.Element("Hoop") 
      select new 
      { 
       Period = d.Attribute("qtr").Value, 
       Name = d.Attribute("player-name").Value, 
       Time = d.Attribute("time-scored").Value 
      }; 
foreach (var qq in query) 
{ 
    listBox.Items.Add(qq.Time); 
} 
+1

には、 "それは動作しませんでした" *はるか*あまりにも漠然としている - 何が起こったのか? (私の推測では、XMLに 'time-scored'値がないので失敗しましたが、実際にはそれを明確にする必要があります。あるいは、' side'という属性を探しているので失敗しました。 ')また、コードとXMLの両方を適切にインデントするようにしてください。読みやすさに大きな違いがあります。 –

+0

スペルとキャピタル化は非常に重要です。それらのすべてが一致することを確認してください。次に、そこにないものを探すことは、失敗を引き起こす可能性があります。それらのものが一致することを確認します。最後に、問題が、あなたが2を期待している場所に1レコードを取得しているということであれば、それはまったく異なる種類の失敗です。 – Nevyn

+0

ありがとうございました。それは現在、ホームチームとアウェーチームの最初のフープタイムを表示しているだけでは失敗しなかった。私はすべてのフープ時間を動的に受け取っています。ホームチームに7フープの要素があれば、7フープの時間をリストボックスに追加します – Decoder94

答えて

5

変更let d = q.Element("Hoop")from d in q.Elements("Hoop")

var xDoc = XDocument.Load("test.xml"); 
var query = from q in xDoc.Descendants("Team") 
      where (string)q.Attribute("Side") == "Home" 
      from d in q.Elements("Hoop") 
      select new 
      { 
       Period = d.Attribute("qtr").Value, 
       Name = d.Attribute("player-name").Value, 
       Time = d.Attribute("time-scored").Value 
      }; 
foreach (var qq in query) 
{ 
    listBox.Items.Add(qq.Time); 
} 
+0

Matthewに感謝します。 – Decoder94

関連する問題