tengo una IEnumerable de una clase de elemento definido como esto:Grupo DateTime por un tiempo arbitrario intervalo
public class Item {
public DateTime Date { get; private set; }
public decimal? Value { get; private set; }
public Item(DateTime date, decimal? value) {
Date = date;
Value = value;
}
}
Estos artículos están en un intervalo de tiempo específico (5 minutos para exemple). Necesito agruparlos por la fecha, pero cambiando el intervalo. Por ejemplo, si los artículos están en el siguiente orden:
2010-08-24 00:05
2010-08-24 00:10
2010-08-24 00:15
2010-08-24 00:20
2010-08-24 00:25
2010-08-24 00:30
y quiero agruparlos en un intervalo de 15 minutos, el resultado debe ser similar a esto:
2010-08-24 00:15
2010-08-24 00:30
El intervalo es proporcionada por otra clase, pero puedo obtener los milisegundos que representan ese intervalo (por ejemplo, Interval.FromMinutes (5) .GetMilliseconds() debería devolver 300000). La pregunta es ¿cómo puedo escribir una función de agrupación que me permita hacer algo como esto: data = items.GroupBy(t => GroupingFunction(t.DateTime, interval))
y obtener ese resultado?
Actualización: el intervalo no será necesariamente en minutos. Podría ser en horas, minutos o incluso días.
¿Quieres agrupación o filtrado (como en el ejemplo)? –
Agrupación. En el ejemplo 00:05, 00:10 y 00:15 se convirtió en 00:15 (voy a sumar los valores de los tres elementos y mantener la marca de hora 00:15). – Fernando