Jak już powiedziałeś, typ danych u.LastLogon to jest DateTime? . Oznacza to, że może mieć wartość lub nie. Przesyłając do DateTime , wymagasz, aby miał wartość. W tym przypadku tak nie jest.
W zależności od tego, co próbujesz z tym zrobić, możesz sprawdzić HasValue właściwość:
userRow["LastLogon"] = u.LastLogin.HasValue ?
(object) u.LastLogin.ToShortDateString() : DBNull.Value;
Jeśli twoja baza danych LastLogon kolumna jest typu DateTime, powinieneś być w stanie wykonać:
userRow["LastLogon"] = u.LastLogin.HasValue ?
(object) u.LastLogin.Value : DBNull.Value;