ho un IEnumerable di una classe elemento definito così:Gruppo DateTime da un tempo arbitrario intervallo
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;
}
}
Questi articoli sono in un intervallo di tempo specifico (5 minuti, per esempio). Ho bisogno di raggrupparli per la data, ma cambiando l'intervallo. Per esempio, se gli articoli sono nel seguente ordine:
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
e voglio raggrupparli in un intervallo di 15 minuti, il risultato dovrebbe essere simile a questo:
2010-08-24 00:15
2010-08-24 00:30
L'intervallo è fornito da un'altra classe, ma posso ottenere i millisecondi che rappresentano quell'intervallo (ad esempio, Interval.FromMinutes (5) .GetMilliseconds() dovrebbe restituire 300000). La domanda è: come posso scrivere una funzione di raggruppamento che mi permetta di fare qualcosa del genere: data = items.GroupBy(t => GroupingFunction(t.DateTime, interval))
e ottenere quel risultato?
Aggiornamento: l'intervallo non sarà necessariamente in minuti. Potrebbe essere in ore, minuti o persino giorni.
Volete raggruppamento o filtro (come nel tuo esempio)? –
Raggruppamento. Nell'esempio 00:05, 00:10 e 00:15 è diventato 00:15 (sommerò i valori dei tre elementi e manterrò il timestamp di 00:15). – Fernando