Ho una query Linq che conta essenzialmente quante voci sono state create in un particolare giorno, che viene eseguito raggruppando per anno, mese, giorno. Il problema è che, poiché alcuni giorni non avranno alcuna voce, devo tornare a riempire quei "giorni di calendario" mancanti con una voce di 0 conteggio. La mia ipotesi è che questo può probabilmente essere fatto con una Union o qualcosa del genere, o forse anche qualche semplice ciclo per elaborare i record dopo la query.Compilare le date mancanti utilizzando un gruppo linq per query di data
Ecco la domanda:
from l in context.LoginToken
where l.CreatedOn >= start && l.CreatedOn <= finish
group l by
new{l.CreatedOn.Year, l.CreatedOn.Month, l.CreatedOn.Day} into groups
orderby groups.Key.Year , groups.Key.Month , groups.Key.Day
select new StatsDateWithCount {
Count = groups.Count(),
Year = groups.Key.Year,
Month = groups.Key.Month,
Day = groups.Key.Day
}));
Se ho i dati per 12/1 - 12/4/2009 simile (semplificato):
12/1/2009 20
12/2/2009 15
12/4/2009 16
voglio una voce con 12/3/2009 0 aggiunto dal codice.
So che in generale questo dovrebbe essere fatto nel DB usando una tabella denormalizzata che si popola con i dati o si uniscono a una tabella di calendario, ma la mia domanda è come dovrei farlo nel codice?
Si può fare a Linq? Dovrebbe essere fatto a Linq?
Eventuali duplicati di [LINQ gruppo per data - include giorni vuoti SENZA usare join] (http://stackoverflow.com/questions/17086120/linq-group-by-date-include-empty-days-without-using-join) – ensisNoctis