LINQ - XML クエリを実行して、特定の XML ファイルの子孫を取得しようとしています。
特定の追跡番号を持つ結果を選択し、イベント履歴を表示する必要がある複数の要素があります。
XML ファイル:
<result>
<trackingnumber>31343</trackingnumber>
<source>post</source>
<eventhistory>
<eventhistory>
<eventdate>21/10/11</eventdate>
<eventtime>06.48 PM</eventtime>
<location>tauranga</location>
</eventhistory>
<eventhistory>
<eventdate>21/10/11</eventdate>
<eventtime>06.48 PM</eventtime>
<location>tauranga</location>
</eventhistory>
<eventhistory>
<eventdate>21/10/11</eventdate>
<eventtime>06.48 PM</eventtime>
<location>tauranga</location>
</eventhistory>
</eventhistory>
</result>
私の現在のコード:
IEnumerable<TrackData> data = from info in xdoc.Descendants("eventhistory")
where info.Element("eventtime") != null &&
info.Parent.Element("trackingnumber").Value == TrackingNumber
select
new TrackData()
{
EventTime = (string)info.Element("eventtime") ?? "No Time Info",
EventDate = (string)info.Element("eventdate") ?? "No Date Info"
};
どこが間違っていますか?おそらく最初に子孫を見つけてから、他の要素に正しい追跡番号が含まれているかどうかを確認するべきではないことを理解していますが、どのように修正するかはわかりません。
また、将来これについての良いガイドを提供してくれる何らかのLINQ XMLバイブルはありますか?私はいつもLINQ XMLに行き詰まっているようです...