8

Another easy one hopefully.

Let's say I have a collection like this:

List<DateTime> allDates;

I want to turn that into

List<List<DateTime>> dividedDates;

where each List in 'dividedDates' contains all of the dates in 'allDates' that belong to a distinct year.

Is there a bit of LINQ trickery that my tired mind can't pick out right now?

Solution

The Accepted Answer is correct.

Thanks, I don't think I was aware of the 'into' bit of GroupBy and I was trying to use the .GroupBy() sort of methods rather than the SQL like syntax. And thanks for confirming the ToList() amendment and including it in the Accepted Answer :-)

Matt Mitchell
  • 39,515
  • 35
  • 113
  • 182

2 Answers2

8
var q  = from date in allDates 
         group date by date.Year into datesByYear
         select datesByYear.ToList();
q.ToList(); //returns List<List<DateTime>>
Mark Cidade
  • 96,194
  • 31
  • 221
  • 232
7

Here's the methods form.

allDates
  .GroupBy(d => d.Year)
  .Select(g => g.ToList())
  .ToList();
Amy B
  • 105,294
  • 20
  • 131
  • 182