2008-09-16 18 views
8

Otra fácil con suerte.Dividir una lista por fecha distinta

Digamos que tengo una colección como esta:

List<DateTime> allDates; 

Quiero convertir eso en

List<List<DateTime>> dividedDates; 

donde todas las listas de 'dividedDates' contiene todas las fechas en 'allDates' que pertenece a un año distinto.

¿Hay algún truco de LINQ que mi mente cansada no pueda detectar en este momento?

Solución

la respuesta aceptada es correcta.

Gracias, no creo saber el bit 'en' de GroupBy y estaba tratando de usar el tipo de métodos .GroupBy() en lugar de la sintaxis similar a SQL. Y gracias por confirmar la enmienda ToList() e incluirla en la respuesta aceptada :-)

Respuesta

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

Gracias! Por favor, consulte mi pequeño comentario en la Pregunta sobre los requisitos ToList() en caso de que me equivoque :-) –

+0

Solucionado y probado –

7

Aquí está la forma de los métodos.

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

Heh Te juro que probé algo así :-) ¡Gracias! –

+0

Gracias! Usé esto y funciona bien. – VoodooChild

Cuestiones relacionadas