Кроме того, имейте в виду, что при доступе к свойству .Value
вашего типа , допускающего нулевое значение , может быть выброшено InvalidOperationException
, если значение отсутствует (в поле ввода указано NULL
в базе данных).
В этом случае вы можете либо отфильтровать нулевые значения:
var filteredGroups = rows.Where(row => row.DateTimeField.HasValue)
.GroupBy(row => row.DateTimeField.Value.Year);
... или также вернуть нулевые значения;скажем под фиктивным ключом:
var nullValuesPresent = rows.GroupBy(row => row.DateTimeField.HasValue
? row.DateTimeField.Value.Year : -1);
... который в приведенном выше примере будет сгруппирован под ключом -1
(или любым другим значением, которое вы выберете для представления сценария несуществующего года).