tags:

views:

2235

answers:

2

Hi,

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 :-)

+4  A: 
var q  = from date in allDates 
         group date by date.Year into datesByYear
         select datesByYear.ToList();
q.ToList(); //returns List<List<DateTime>>
Mark Cidade
Thanks! Please see my little comment in the Question about the ToList() requirements in case I am wrong :-)
Graphain
Fixed and tested
Mark Cidade
+3  A: 

Here's the methods form.

allDates
  .GroupBy(d => d.Year)
  .Select(g => g.ToList())
  .ToList();
David B
Heh I swear I tried something like that :-) Thanks though!
Graphain