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
  • 40,943
  • 35
  • 118
  • 185

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
  • 98,437
  • 31
  • 224
  • 236
7

Here's the methods form.

allDates
  .GroupBy(d => d.Year)
  .Select(g => g.ToList())
  .ToList();
Amy B
  • 108,202
  • 21
  • 135
  • 185