LINQ statements that aggregate sums from a List of objects
To combine the two queries into one, you can use select … into:

chartData.DataRows = (from h in hours
                      orderby h.Year, h.WeekOfYear, h.LocationName, h.ProgramName
                      group h by new { h.Year, h.WeekOfYear, h.LocationName, h.ProgramName }
                      into programLocationGroups
                      select new
                      {
                          Location = programLocationGroups.Key.LocationName,
                          Program = programLocationGroups.Key.ProgramName,
                          Hours = programLocationGroups.Sum(p =&gt; p.Hours)
                      }
                      into d
                      group d by new { d.Program, d.Location } into programLocationSums
                      select new FindAllAnalyticsResponse.DataRow
                      {
                          Location = programLocationSums.Key.Location,
                          Program = programLocationSums.Key.Program,
                          Data = programLocationSums.Select(p =&gt; p.Hours).ToList()
                      }).ToList();


Though I'm not sure this is actually an improvement.

I think an equivalent and simpler query would be to first group only by location and program and then by week in a nested query:

chartData.DataRows = (from h in hours
                      orderby h.LocationName, h.ProgramName
                      group h by new { h.LocationName, h.ProgramName } into programLocationGroup
                      select new FindAllAnalyticsResponse.DataRow
                      {
                          Location = programLocationGroup.Key.LocationName,
                          Program = programLocationGroup.Key.ProgramName,
                          Data = (from pl in programLocationGroup
                                  orderby pl.Year, pl.WeekOfYear
                                  group pl by new { pl.Year, pl.WeekOfYear } into weekGroup
                                  select weekGroup.Sum(w =&gt; w.Hours)).ToList()
                      }).ToList();


Note that the above code may need some better in the variables I introduced.