あなたが言ったように、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;