Min
вернет NULL
в SQL.Это ожидается.Проблема возникает в C #, когда вы приводите результат.если тип не обнуляемый, вы получите ошибку, подобную следующей:
The null value cannot be assigned to a member with type System.DateTime which is a non-nullable value type.
Это потому, что C # будет основывать тип возвращаемого значения на поле, которое вы запрашиваете Min
, в этом случае aDateTime
(так работают дженерики).Но мы можем избежать этой ошибки, просто введя тип результата в пустую версию типа!
Ваш исходный запрос изменится на следующее:
dataContext.Payrolls
.Where(proll => proll.CompanyID == companyId)
.Min(proll => (DateTime?)proll.PayrollDate)
Это даст NULL
результат вместо броска исключения.IIRC, если ваш исходный тип уже обнуляем, вам не понадобится набор типов.