2010-06-11 190 views
1

我正在學習使用LINQ。我在網上看到了一些讓我印象深刻的視頻。爲了努力學習LINQ,我決定嘗試向NOAA Web服務寫一個查詢。如果您在瀏覽器的地址欄中輸入「http://www.weather.gov/forecasts/xml/sample_products/browser_interface/ndfdBrowserClientByDay.php?zipCodeList=20001&format=24+hourly&startDate=2010-06-10&numDays=5」,則會看到一些XML。我已經成功地在C#程序中檢索到該XML。我在加載XML到LINQable實體通過執行以下操作:C#+使用LINQ查詢XML

string xml = QueryWeatherService(); 
XDocument weather = XDocument.Parse(xml); 

我已經定義了一個名爲DailyForecast類,如下所示:

public class DailyForecast 
{ 
    public float HighTemperature { get; set; }  
    public float LowTemperature { get; set; } 
    public float PrecipitationPossibility { get; set; } 
    public string WeatherSummary { get; set; } 
} 

我試圖寫一個LINQ查詢附着在我的DailyForecast類的結構。在這個時候,我只得到了這麼多:

var results = from day in response.Descendants("parameters") 
       select day; 

我不知道。由於返回的XML結構,我不確定是否可以單獨使用LINQ查詢。我認爲唯一的方法是通過一個循環並遍歷XML。如果我錯了,我正在尋找人來糾正我。有人可以告訴我,如果我可以使用純粹的LINQ來堅持DailyForecast類的結構嗎?如果是這樣,怎麼樣?

謝謝!

+0

LINQ將正常工作,但如果你已經有一些類的目標相匹配的輸入XML的形狀,你可以考慮使用XmlSerializer的那些類型只是反序列化輸入 – 2010-06-11 06:12:42

回答

1

由於您的XML可能會返回多條記錄,

var results = from day in response.Descendants("parameters") 
       select new DailyForecast() 
       { 
       HighTemperature = day.Element("param name corresponding to high temp"), 
       }; 

return result.ToList(); //or any type of collection you want to return