Я пытаюсь понять, как LINQ можно использовать для группировки данных по интервалам времени; а затем в идеале объединить каждую группу.
Находя множество примеров с явными диапазонами дат, я пытаюсь сгруппировать их по таким периодам, как 5 минут, 1 час, 1 день.
Например, у меня есть класс, который обертывает DateTime со значением:
public class Sample
{
public DateTime timestamp;
public double value;
}
Эти наблюдения содержатся в виде серии в коллекции List:
List<Sample> series;
Итак, для группировки по часовым периодам времени и агрегированного значения по среднему , Я пытаюсь сделать что-то вроде:
var grouped = from s in series
group s by new TimeSpan(1, 0, 0) into g
select new { timestamp = g.Key, value = g.Average(s => s.value };
Это в корне ошибочно, так как группирует сам TimeSpan. Я не могу понять, как использовать TimeSpan (или любой тип данных, представляющий интервал) в запросе.