Както казахте, типът данни u.LastLogon е DateTime? . Това означава, че може или не може да има стойност. Чрез кастинг към DateTime , вие изисквате от него да има стойност. В този случай не е така.
В зависимост от това какво се опитвате да направите с него, може да искате да проверите HasValue свойство:
userRow["LastLogon"] = u.LastLogin.HasValue ?
(object) u.LastLogin.ToShortDateString() : DBNull.Value;
Ако вашата база данни LastLogon е от тип DateTime, тогава трябва да можете да направите:
userRow["LastLogon"] = u.LastLogin.HasValue ?
(object) u.LastLogin.Value : DBNull.Value;