Tôi có Linq sau để nhóm danh sách theo năm, sau đó theo tháng.LINQ: nhóm theo năm và tháng và quản lý các tháng trống
var changesPerYearAndMonth = list
.GroupBy(revision => new { revision.LocalTimeStamp.Year, revision.LocalTimeStamp.Month })
.Select(group => new { GroupCriteria = group.Key, Count = group.Count() })
.OrderBy(x => x.GroupCriteria.Year)
.ThenBy(x => x.GroupCriteria.Month);
sản lượng hiện tại của tôi là như sau:
Year 2005, month 1, count 469
Year 2005, month 5, count 487
Year 2005, month 9, count 452
Year 2006, month 1, count 412
Year 2006, month 5, count 470
...
Như bạn thấy, tháng không có giá trị, không được bao gồm trong truy vấn. Tôi muốn bao gồm chúng, có kết quả sau:
Year 2005, month 1, count 469
Year 2005, month 2, count 0
Year 2005, month 3, count 0
...
Year 2005, month 12, count 0
Year 2006, month 1, count 412
Year 2006, month 2, count 0
...
Year 2006, month 12, count 0
Nói cách khác, tôi cũng cần phải có các tháng còn trống.
Tôi có thể triển khai điều này bằng truy vấn LINQ không? Cảm ơn trước
Tại sao chúng ta dành nhiều thời gian để đưa ra một LINQ khó khăn, không thể đọc và không hiệu quả khi chúng ta có thể làm đơn giản và dễ đọc hơn trong một vòng lặp? – Aliostad
@Aliostad: Cho đến nay, giải pháp LINQ của Daniel khá đơn giản và dễ đọc. Anh ta luôn có thể quay trở lại sử dụng vòng lặp nếu câu trả lời cho câu hỏi này trở nên quá phức tạp khi sử dụng LINQ. – Heinzi
Vâng, tôi chỉ nghĩ rằng chúng ta đang ở trong thế giới Linq-mad không tốt. Bạn mất tất cả sức mạnh gỡ lỗi đó. Vấn đề là, tương tự như XSLT, nếu nó trở nên quá phức tạp thì nó là một ngôi nhà của thẻ. – Aliostad