Estoy tratando de comprender cómo se puede usar LINQ para agrupar datos por intervalos de tiempo; y luego idealmente agregue cada grupo.Agregado de LINQ y grupo por períodos de tiempo
Encontrando numerosos ejemplos con rangos de fechas explícitos, intento agrupar por períodos como 5 minutos, 1 hora, 1 día.
Por ejemplo, tengo una clase que se ajusta un DateTime con un valor de:
public class Sample
{
public DateTime timestamp;
public double value;
}
Estas observaciones están contenidas como una serie de una colección de lista:
List<Sample> series;
Así, para agrupar por cada hora y el valor agregado en promedio, estoy tratando de hacer algo como:
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 };
T el suyo es fundamentalmente defectuoso, ya que agrupa al TimeSpan mismo. No puedo entender cómo usar TimeSpan (o cualquier tipo de datos que represente un intervalo) en la consulta.
¿Describiría su pregunta con datos de muestra? – Lrrr
@AliAmiri - Creo que es lo suficientemente claro. Los resultados de muestra pueden ayudar. –
Fantástica pregunta. Estoy seguro de que muchas personas luchan con esta tarea exacta. Parece que los datos de series temporales tienen su conjunto de dificultades. – Zapnologica