Como você disse, o tipo de dados de
u.LastLogon é DateTime? . Isso significa que pode ou não ter um valor. Ao transmitir para DateTime , você está exigindo que ele tenha um valor. Neste caso, não. Dependendo do que você está tentando fazer com ele, você pode querer verificar o
HasValue propriedade:userRow["LastLogon"] = u.LastLogin.HasValue ?
(object) u.LastLogin.ToShortDateString() : DBNull.Value;
Se seu banco de dados
LastLogon coluna é do tipo DateTime, então você deve ser capaz de fazer:userRow["LastLogon"] = u.LastLogin.HasValue ?
(object) u.LastLogin.Value : DBNull.Value;