Như bạn đã nói, kiểu dữ liệu của u.LastLogon là DateTime? . Điều này có nghĩa là nó có thể có hoặc không có giá trị. Bằng cách truyền tới DateTime , bạn đang yêu cầu nó phải có một giá trị. Trong trường hợp này, nó không.
Tùy thuộc vào những gì bạn đang cố gắng thực hiện với nó, bạn có thể muốn kiểm tra HasValue tài sản:
userRow["LastLogon"] = u.LastLogin.HasValue ?
(object) u.LastLogin.ToShortDateString() : DBNull.Value;
Nếu cơ sở dữ liệu của bạn LastLogon thuộc loại DateTime, thì bạn có thể thực hiện:
userRow["LastLogon"] = u.LastLogin.HasValue ?
(object) u.LastLogin.Value : DBNull.Value;