Sorting a list based on date and time
You should first do OrderBy and then you should do ThenBy instead of doing another OrderBy. What you are currently doing is that you are re-ordering everything after your first OrderBy.

public IEnumerable&lt;ReadingValue&gt; Hourly(IList&lt;ReadingValue&gt; readings)
{
    var sortedReadings = readings.OrderBy(x =&gt; x.DateTimeOfReading.TimeOfDay)
        .ThenBy(x =&gt; x.DateTimeOfReading.Date)
        .ThenBy(x =&gt; x.DateTimeOfReading.Year);

    return sortedReadings;
}