2008-09-16 2 views
8

Еще один легкий, надеюсь.Разделите список на определенную дату

Скажем, у меня есть коллекция, как это:

List<DateTime> allDates; 

Я хочу, чтобы превратить это в

List<List<DateTime>> dividedDates; 

где каждый список в «dividedDates» содержит все даты в «allDates», что относятся к отчетливому году.

Есть ли немного обмана LINQ, который мой усталый ум не может выбрать прямо сейчас?

Решение

Принятый Ответ правильный.

Спасибо, я не думаю, что знал о «в» бит GroupBy, и я пытался использовать методы типа .GroupBy(), а не синтаксис SQL. И спасибо за подтверждение поправки ToList() и ее включение в Принятый ответ :-)

ответ

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

Спасибо! Пожалуйста, см. Мой маленький комментарий в вопросе о требованиях ToList() на случай, если я ошибаюсь :-) – 2008-09-16 06:30:36

+0

Исправлено и протестировано – 2008-09-16 06:31:23

7

Вот формы методов.

 
allDates 
    .GroupBy(d => d.Year) 
    .Select(g => g.ToList()) 
    .ToList(); 
Смежные вопросы