Widziałem wiele, wiele wersji tego na SO, ale żaden z nich nie wydaje się działać na moje potrzeby.Obsługa DateTime DBNull
Moje dane pochodzą z bazy danych dostawców, która dopuszcza wartość null dla pól DateTime. Najpierw wyciągam moje dane do DataTable.
using (SqlCommand cmd = new SqlCommand(sb.ToString(), conn))
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
da.Fill(dt);
}
Konwertuję DataTable na listę <> do przetworzenia.
var equipment = from i in dt.AsEnumerable()
select new Equipment()
{
Id = i.Field<string>("ID"),
BeginDate = i.Field<DateTime>("BeginDate"),
EndDate = i.Field<DateTime>("EndDate"),
EstimatedLife = i.Field<double>("EstimatedLife")
}
Jak zatem sprawdzić DBNull w tym przypadku? Próbowałem napisać metodę.
public DateTime CheckDBNull(object dateTime)
{
if (dateTime == DBNull.Value)
return DateTime.MinValue;
else
return (DateTime)dateTime;
}
Więc na mojego obiektu Equipment określić jako 'DateTime' pola' 'DateTime –
Jeśli jest to ważna sprawa dla Twojego biznesu Sprzęt nie ma daty rozpoczęcia ani zakończenia, a następnie tak. W przeciwnym razie warstwa db powinna wygenerować wyjątek. –
yep - jest to skrót do 'Nullable' –