C#+使用LINQ查询XML

时间:2010-06-11 00:24:27

标签: c# linq

我正在学习使用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实体中:

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; }
}

我正在尝试编写符合DailyForecast类结构的LINQ查询。在这个时候,我只是走到了这一步:

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

我知道的不是很远。由于返回的XML结构,我不确定是否可以单独使用LINQ查询。我认为唯一的方法是通过循环并遍历XML。如果我错了,我正在找人纠正我。有人可以告诉我,我是否可以使用纯粹的LINQ来获得结果,这些LINQ遵循DailyForecast类的结构?如果是这样,怎么样?

谢谢!

1 个答案:

答案 0 :(得分: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