2008-09-16 35 views
8

Một cách dễ dàng khác là hy vọng.Tách một danh sách theo ngày riêng biệt

Hãy nói rằng tôi có một bộ sưu tập như thế này:

List<DateTime> allDates; 

Tôi muốn biến chúng thành

List<List<DateTime>> dividedDates; 

nơi mỗi List trong 'dividedDates' chứa tất cả các ngày trong 'allDates' mà thuộc về một năm riêng biệt.

Có một chút thủ thuật LINQ mà tâm trí mệt mỏi của tôi không thể chọn ra ngay bây giờ không?

Giải pháp

Câu trả lời được chấp nhận là đúng.

Cảm ơn, tôi không nghĩ rằng tôi đã nhận thức được 'vào' bit của GroupBy và tôi đã cố gắng sử dụng các phương thức .GroupBy() thay vì cú pháp SQL giống như. Và cảm ơn bạn đã xác nhận việc sửa đổi ToList() và bao gồm nó trong Câu trả lời được chấp nhận :-)

Trả lời

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

Cảm ơn! Xin vui lòng xem bình luận nhỏ của tôi trong câu hỏi về các yêu cầu ToList() trong trường hợp tôi sai :-) –

+0

Cố định và thử nghiệm –

7

Đây là mẫu phương thức.

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

Heh tôi thề tôi đã thử một cái gì đó như thế :-) Cảm ơn mặc dù! –

+0

Cảm ơn! Tôi đã sử dụng nó và nó hoạt động tốt. – VoodooChild

Các vấn đề liên quan