2008-09-16 6 views
8

Un autre facile, espérons-le.Diviser une liste par date distincte

Disons que j'ai une collection comme ceci:

List<DateTime> allDates; 

Je veux transformer en

List<List<DateTime>> dividedDates; 

où chaque liste dans « dividedDates » contient toutes les dates « allDates » qui appartiennent à une année distincte.

Y at-il un peu de supercherie LINQ que mon esprit fatigué ne peut pas choisir maintenant?

Solution

Le Acceptée réponse est correcte. Merci, je ne pense pas que je connaissais le bit 'into' de GroupBy et j'essayais d'utiliser le genre de méthodes .GroupBy() plutôt que la syntaxe SQL. Et merci pour confirmer la modification ToList() et de l'inclure dans la réponse acceptée :-)

Répondre

8
var q = from date in allDates 
     group date by date.Year into datesByYear 
     select datesByYear.ToList(); 
q.ToList(); //returns List<List<DateTime>> 
+0

Merci! S'il vous plaît voir mon petit commentaire dans la question sur les exigences ToList() au cas où je me trompe :-) –

+0

Fixe et testé –

7

Voici la forme de méthodes.

 
allDates 
    .GroupBy(d => d.Year) 
    .Select(g => g.ToList()) 
    .ToList(); 
+0

Heh je jure que j'ai essayé quelque chose comme ça :-) Merci! –

+0

Merci! Je l'ai utilisé et ça marche bien. – VoodooChild

Questions connexes