J'ai une requête Linq qui compte essentiellement combien d'entrées ont été créées un jour particulier, ce qui est fait en groupant par année, mois, jour. Le problème est que parce que certains jours n'auront pas d'entrées, je dois remplir ces "jours civils" manquants avec une entrée de 0 compte. Ma conjecture est que cela peut probablement être fait avec un syndicat ou quelque chose, ou peut-être même une simple boucle pour traiter les enregistrements après la requête.Remplissage des dates manquantes à l'aide d'une requête de groupe linq par date
Voici la question:
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
}));
Si j'ai données pour 12/1 - 12/4/2009 comme (simplifié):
12/1/2009 20
12/2/2009 15
12/4/2009 16
Je veux une entrée avec 12/3/2009 0 ajouté par code. Je sais qu'en général cela devrait être fait dans la base de données en utilisant une table dénormalisée que vous remplissez avec des données ou que vous vous joignez à une table de calendrier, mais ma question est comment j'accomplirais ceci dans le code?
Cela peut-il être fait dans Linq? Devrait-il être fait à Linq?
double possible de [groupe LINQ par date - inclure les jours vides SANS utiliser la jointure] (http://stackoverflow.com/questions/17086120/linq-group-by-date-include-empty-days-without-using-join) – ensisNoctis