2008-09-16 35 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();