7
votes

Comment puis-je regrouper par les événements par an à l'aide d'une seule requête LINQ?

J'ai une table de base de données qui représente des événements. La table dispose de 2 champs principaux EventDate et Eventtitle.

J'essaie de regrouper les événements par année pour être affichés à l'utilisateur. J'essaie d'utiliser une requête LINQ pour tirer les années distinctes qui ont des événements et pour chaque année, il devrait y avoir une liste d'événements de cette année. Donc, chaque enregistrement de la liste aurait une année et une liste d'événements

Je suppose que cela peut être fait avec une requête LINQ, mais ma connaissance LINQ est basique. Jusqu'à présent, je n'ai obtenu que les années distinctes dans une liste avec cette requête: xxx

Comment puis-je ajouter une liste d'événements à l'enregistrement de chaque année?


1 commentaires

Je devais supprimer l'image de votre message car les imageshack les ont supprimées et les ont remplacées par la publicité. Voir meta.stackexchange.com/q/263771/215468 pour plus d'informations. Si possible, ce serait formidable pour que vous puissiez les reprogrammer. Merci!


3 Réponses :


9
votes
var yearsList = from e in Events
                group e by e.EventDate.Year into g
                select new { Year = g.Key, Events = g };
That will get you a list of objects with a "Year" property and an "Events" property (all the events for that year).Have a look at this handy reference: 101 Linq Samples.

0 commentaires

8
votes

Vous recherchez vraiment un groupe commandé.

var yearsList = from e in Events
                group e by e.EventDate.Year into g
                orderby g.Key
                select g;

foreach(var yearGroup in yearsList)
{
    int year = yearGroup.Key;
    foreach(Event e in yearGroup)
    {
        // do something with the events
    }
}


0 commentaires

1
votes

En supposant que vous avez la classe d'événement suivante xxx

ce qui précède devrait vous donner des événements groupés par année


0 commentaires