J'ai une collection d'enregistrements. Qui ont deux boxeurs, date de match, lieu etc ... Je veux les séparer par mois et les regrouper. Actuellement, j'ai ce qui est ci-dessous. Et cela fonctionne dans une certaine mesure. Cela recherche des dates de match dans le futur. C'est cette année et passe à travers chaque mois (1-12) et trouve des correspondances dans cette plage de dates.Séparer les enregistrements en mois individuels pour mvc
Placer dans un dictionnaire gentil de int, dénombrable où int est le mois et enumberable est la collection de matches en ce mois
//Build the matches list by Months!!!
var summarysDic = new Dictionary<int, IEnumerable<MatchSummary>>();
for (int i = 1; i <= 12; i++)
{
var MatchesOfMonth = matches.Where(x => x.MatchDate.Value.Year == DateTime.Now.Year &&
x.MatchDate.Value.Month == i &&
!x.HasResult() &&
x.MatchDate.Value > DateTime.Now);
if (MatchesOfMonth.Count() > 0)
{
summarysDic.Add(i, MatchesOfMonth.OrderBy(x => x.MatchDate).Select(x=> new MatchSummary(x)).ToArray());
}
}
problème est traite actuellement que cette année. Je voudrais plutôt faire en sorte que cela fonctionne pour "les 6 prochains mois" mais cela devrait bien sûr fonctionner aussi pour la nouvelle année!
Quel est le meilleur/le plus propre à faire cela?
merci d'avance!
PS sur une note de côté je dois encore trouver comment faire simplement DateTime.Now.Month.add (1), par exemple (comme je vais toujours aller de l'avant de la date actuelle!)
--- CODE --COMPLETED -----
//Build the matches list by Months!!!
var summarysDic = new Dictionary<string, IEnumerable<MatchSummary>>();
for (int i = 1; i <= 12; i++)
{
var checkDate = DateTime.Now.AddMonths(i);
var MatchesOfMonth = matches.Where(x => x.MatchDate.Value.Month == checkDate.Month &&
x.MatchDate.Value.Year == checkDate.Year &&
!x.HasResult() &&
x.MatchDate.Value > DateTime.Now);
if (MatchesOfMonth.Count() > 0)
{
var firstMatchDate = MatchesOfMonth.First().MatchDate.Value;
if (firstMatchDate.Year != DateTime.Now.Year)
{
summarysDic.Add(firstMatchDate.ToString("MMMM yyyy"), MatchesOfMonth.OrderBy(x => x.MatchDate).Select(x => new MatchSummary(x)).ToArray());
}
else
{
summarysDic.Add(firstMatchDate.ToString("MMMM"), MatchesOfMonth.OrderBy(x => x.MatchDate).Select(x => new MatchSummary(x)).ToArray());
}
}
}
semble bien maintenant Steve, une chose cependant, vous pouvez modifier la boucle à « (int i = 0; i <= 12 ... ", de sorte que vous incluerez des allumettes à partir de maintenant jusqu'à la fin de ce mois –