У меня есть следующая Linq, чтобы группировать список по годам, затем по месяцам.Linq: группа по годам и месяцам, и управлять пустыми месяцами
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);
Мой текущий выход заключается в следующем:
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
...
Как вы можете видеть, месяцы без значения, не включаются в запрос. Я хотел бы включить их, имея следующий вывод:
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
Другими словами, мне нужно получить также пустые месяцев.
Могу ли я реализовать это с помощью запроса Linq? Заранее спасибо
Почему мы тратим так много времени, придумывая неудобной, не читаемый и неэффективного Linq, когда мы можем сделать это проще и считываемый в цикле? – Aliostad
@Aliostad: До сих пор решение Daniel Linq довольно прямолинейно и читаемо. Он всегда может вернуться к использованию цикла, если ответ на этот вопрос оказывается слишком сложным с использованием Linq. – Heinzi
Ну, я просто думаю, что мы в мире Линк-сумасшедшего, который не очень хорош. Вы теряете всю эту способность отладки. Дело в том, что, подобно XSLT, если он становится слишком сложным, это карточный домик. – Aliostad