Сложно ответить на вопрос как есть, поскольку он пропускает некоторые детали. Но если я правильно понимаю, вы хотите сгруппировать отчеты о состоянии по их (собирающим?) Часам. Если это так, вы можете сделать это следующим образом:
var hourlyReport = pumpStatuses
.Where(x => x.Date > startDate && x.Date < endDate)
.GroupBy(x => x.Date.Hour)
.ToList();