tags:

views:

48

answers:

1

Hello,

I'm learning to use LINQ. I have seen some videos online that have really impressed me. In an effort to learn LINQ myself, I decided to try to write a query to the NOAA web service. If you put "http://www.weather.gov/forecasts/xml/sample_products/browser_interface/ndfdBrowserClientByDay.php?zipCodeList=20001&format=24+hourly&startDate=2010-06-10&numDays=5" in your browser's address bar, you will see some XML. I have successfully retrieved that XML in a C# program. I am loading the XML into a LINQable entity by doing the following:

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

I have a class called DailyForecast defined as follows:

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

I'm trying write a LINQ query that adheres to the structure of my DailyForecast class. At this time, I've only gotten to this far:

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

Not very far I know. Because of the structure of the XML returned, I'm not sure it is possible to solely use a LINQ query. I think the only way to do this is via a loop and traverse the XML. I'm seeking someone to correct me if I'm wrong. Can someone please tell me if I can get results using purely LINQ that adhere to the structure of the DailyForecast class? If so, how?

Thank you!

+1  A: 

Since your xml may return multiple records,

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
uni