Агрегирование и группировка LINQ по периодам времени

Я пытаюсь понять, как 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 (или любой тип данных, представляющий интервал) в запросе.

34
задан Jason Sturges 13 January 2012 в 19:40
поделиться