私はこれの多くのバージョンをSOで見ましたが、どれも私のニーズにうまく機能していないようです。
私のデータは、DateTimeフィールドにnullを許可するベンダーデータベースから取得されます。まず、データをDataTableにプルします。
using (SqlCommand cmd = new SqlCommand(sb.ToString(), conn))
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
da.Fill(dt);
}
処理のためにDataTableをList<>に変換しています。
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")
}
では、このインスタンスでDBNullをチェックするにはどうすればよいですか?メソッドを書いてみました。
public DateTime CheckDBNull(object dateTime)
{
if (dateTime == DBNull.Value)
return DateTime.MinValue;
else
return (DateTime)dateTime;
}