using System.Collections.Generic;
public static void Main()
String[] cityNameList = { "Marlboro", "San Diego", "Cheyenne", "Anchorage", "Austin", "Orlando", "Seattle", "Cleveland", "Portland", "Honolulu" };
foreach (String cityName in cityNameList)
getCityTemperature(cityName);
static public void getCityTemperature(String cityName)
String queryURL = "http://api.openweathermap.org/data/2.5/forecast/?q=" + cityName + ",us&APPID=ed358708180e730d9cef06092fb19688&units=imperial";
Uri requestUri = new Uri(queryURL);
HttpClient httpClient = new HttpClient();
var response = httpClient.GetAsync(requestUri).Result;
if(response.IsSuccessStatusCode)
var data = response.Content.ReadAsStringAsync().Result;
var wf = JsonConvert.DeserializeObject<WeatherForecast>(data);
var avg = wf.list.GroupBy(w => w.dt_txt.Date).Select(g => new
avg = g.Average(a => a.main.temp)
Console.WriteLine("---------------------------------------------------------------------------");
Console.WriteLine("{0}", cityName);
Console.WriteLine(" Date Avg Temp(F)");
foreach (var item in avg)
Console.WriteLine("{0, 20}{1,20}", item.dt.Date.ToString("MM/dd/yyyy"), item.avg.ToString("0.00") + " F");
Console.WriteLine("Error response: " + response.StatusCode.ToString());
Console.WriteLine("Error: " + ex.HResult.ToString("X") + " Message: " + ex.Message);
public double lat { get; set; }
public double lon { get; set; }
public int ID { get; set; }
public String name { get; set; }
public Coord coord { get; set; }
public String Country { get; set; }
public class DataForecast
public int dt { get; set; }
public Temperature main { get; set; }
public DateTime dt_txt { get; set; }
public double temp { get; set; }
public double temp_min { get; set; }
public double temp_max { get; set; }
public double pressure { get; set; }
public double sea_level { get; set; }
public double grnd_level { get; set; }
public int humidity { get; set; }
public double temp_kf { get; set; }
public class WeatherForecast
public City city { get; set; }
public string cod { get; set; }
public double message { get; set; }
public int cnt { get; set; }
public List<DataForecast> list { get; set; }