Jak jste řekli, datový typ u.LastLogon je DateTime? . To znamená, že může nebo nemusí mít hodnotu. Odesláním do DateTime , požadujete, aby měl hodnotu. V tomto případě tomu tak není.
V závislosti na tom, co se s tím snažíte udělat, možná budete chtít zkontrolovat HasValue vlastnost:
userRow["LastLogon"] = u.LastLogin.HasValue ?
(object) u.LastLogin.ToShortDateString() : DBNull.Value;
Pokud vaše databáze LastLogon sloupec je typu DateTime, pak byste měli být schopni:
userRow["LastLogon"] = u.LastLogin.HasValue ?
(object) u.LastLogin.Value : DBNull.Value;