Mam następujące Linq do grupowania listy według roku, a następnie miesiąca.Linq: grupa według roku i miesiąca i zarządzaj pustymi miesiącami
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);
Moja prąd wyjściowy jest następujący:
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
...
Jak widać, miesiąc bez wartości, nie są zawarte w zapytaniu. Chciałbym je uwzględnić, mając następującą wydajność:
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
Innymi słowy, muszę również uzyskać puste miesiące.
Czy mogę zaimplementować to za pomocą zapytania Linq? Dzięki z góry
Dlaczego spędzamy tyle czasu wymyślanie trudnej, bez czytelnego i nieefektywnego Linq kiedy możemy zrobić to prostsze i bardziej czytelne w pętli? – Aliostad
@Aliostad: Do tej pory rozwiązanie Linq Daniela jest dość proste i czytelne. Zawsze może skorzystać z pętli, jeśli odpowiedź na to pytanie okaże się zbyt skomplikowana przy użyciu Linq. – Heinzi
Cóż, po prostu myślę, że jesteśmy w szalonym świecie Linq, który nie jest dobry. Tracisz całą tę moc debugowania. Chodzi o to, że podobnie jak XSLT, jeśli robi się zbyt skomplikowany, jest to dom z kartami. – Aliostad