Ho bisogno di raggruppare i miei dati per ogni minuto del giorno e ottenere il conteggio degli eventi che si sono verificati durante quel minuto. Al momento ho:C# ottiene il numero minuto dalla data nel gruppo linq di
items.GroupBy(x => new
{
x.date.Minute,
x.date.Hour
})
.Select(x => new TransferObject
{
Minute = x.Key.Minute,
Hour = x.Key.Hour,
Count = x.Count(),
Day = date
}).OrderBy(x => x.Hour).ThenBy(x => x.Minute).ToList();
Questo non fa quello che mi serve, ma il problema è che non può avere punti di dati per ogni minuto, come potrei aggiungere 0 a Count
campo se non ho i dati per quel minuto ? In alternativa, potrei aggiungere il numero minuto (0 ... 1440) e aggiungere i valori mancanti in seguito.
EDIT
La soluzione attualmente gruppi da solo la data di partenza, ma che in realtà oggetto ha un campo end_date
. Quindi, in pratica, al momento ho tutti gli eventi che sono iniziati in quel minuto, ma ho bisogno di ottenere il conteggio degli eventi che erano in esecuzione in quel minuto.
I dati che ho contiene:
date end_date
2015-05-15 09:52:15.650 2015-05-15 09:55:38.097
2015-05-15 09:52:15.633 2015-05-15 09:52:16.097
2015-05-15 09:52:11.633 2015-05-15 09:52:13.047
2015-05-15 09:51:49.097 2015-05-15 09:55:17.687
2015-05-15 09:51:49.087 2015-05-15 09:56:17.510
Al momento la non utilizza il campo end_date
quindi l'uscita è
{Count:2;Hour:9;Minute:51}
{Count:3;Hour:9;Minute:52}
ho bisogno di avere tutti gli eventi che erano in esecuzione, qualcosa come
{Count:2;Hour:9;Minute:51}
{Count:5;Hour:9;Minute:52}
{Count:3;Hour:9;Minute:53}
{Count:3;Hour:9;Minute:54}
{Count:3;Hour:9;Minute:55}
{Count:2;Hour:9;Minute:56}
veda la risposta aggiornata. – Jamiec