Q:

C# UWP Populating and accessing a nested list

I am creating an app that stores and displays weather details. 
In this snippet result is a list of objects (40 objects, 8 weather forecasts daily over 5 days) that I am separating into days and hours. I am using a nested list to display a list of hourly forecasts within a list of days(each sortedDay list has its own sortedHours list within it. 
When I print the output every object has the same value and  Debug.WriteLine(" -"); is being called after each print (39 times when it should only be called max 5 times)
//create a list of weatherController lists to hold each day
List<List<WeatherController>> sortedDays =new List<List<WeatherController>>();

//create a list of weatherController objects to hold each hourly interval
List<WeatherController> sortedHours = new List<WeatherController>();

// a base time
DateTime prevDate = Convert.ToDateTime("2000-01-01");
int counter = 0;

// iterate through result list  
foreach (var wCount in result.list)
{
    // if the date is greater than the previous date add the sortedHours to sortedDays
    if (Convert.ToDateTime(result.list[counter].dt_txt) > prevDate && counter!=0)
    {
        sortedDays.Add(sortedHours);
        sortedHours.Clear();
    }
    WeatherController wController= new WeatherController();

    wController.dtime=result.list[counter].dt_txt;
    wController.temp = result.list[counter].main.temp;
    wController.humidity= result.list[counter].main.humidity;
    wController.desc = result.list[counter].weather[0].description;
    wController.windSpeed= result.list[counter].wind.speed;
    sortedHours.Add(wController);

    prevDate = Convert.ToDateTime(result.list[counter].dt_txt);
    counter++;

}

// test List of list Structure
int xCount=0,yCount=0;

foreach(var sd in sortedDays)
{
    foreach(var sh in sortedHours)
    {
        // DEBUG
        Debug.WriteLine(sortedDays[xCount][yCount].ToString());
        yCount++;
    }
    Debug.WriteLine(" -");
    xCount++;
    yCount = 0;
}

A snippet of the output:
dtime:2018-03-05 21:00:00 temp:274.687 humidity:100 desc:light rain windpeed:3.61

-
dtime:2018-03-05 21:00:00 temp:274.687 humidity:100 desc:light rain windpeed:3.61
-
dtime:2018-03-05 21:00:00 temp:274.687 humidity:100 desc:light rain windpeed:3.61
-
dtime:2018-03-05 21:00:00 temp:274.687 humidity:100 desc:light rain windpeed:3.61
-

A:

First problem is that you are reusing one single instance of sortedHours for each result entry. Because List<T> is a reference type, the variable points to the location in memory where the data is stored. Because you Clear and Add to the same instance in each iteration, after the last "round" it will contain only the very last item from the list.
Second problem is that the last item in the input is not processed, because the foreach will end and the sortedHours list will contain some items that were not yet assigned to any day.
Finally there is problem in the date comparison:
Convert.ToDateTime(result.list[counter].dt_txt) > prevDate

This does not compare dates only. It compares date and time. This means that it the if will execute every time. To compare dates only, you would have to nullify the time portion of the date, which can be done most easily by using the Date property:
Convert.ToDateTime(result.list[counter].dt_txt).Date > prevDate.Date

