SO üzerinde birçok, birçok sürümü gördüm, ancak bunların hiçbiri ihtiyaçlarım için çok işe yaramıyor.Bir DateTime Kullanılıyor DBNull
Verilerim, DateTime alanları için null izin veren bir satıcı veritabanından geliyor. Önce verileri bir DataTable'a çekiyorum.
using (SqlCommand cmd = new SqlCommand(sb.ToString(), conn))
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
da.Fill(dt);
}
Ben işlenmek üzere bir List <> bir DataTable dönüştürme ediyorum.
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")
}
Bu durumda DBNull'u nasıl denetlerim? Bir yöntem yazmaya çalıştım. Kullanım IsDBNull()
System.Convert.IsDBNull(value);
veya eğer
public DateTime CheckDBNull(object dateTime)
{
if (dateTime == DBNull.Value)
return DateTime.MinValue;
else
return (DateTime)dateTime;
}
DateTime 'olarak' DateTime' alanları tanımlamak ' –
bunun için geçerli bir iş durumda senin Başlangıç ya da bitiş tarihi olmayan ekipman evet. Aksi halde db katmanınız bir istisna atmalıdır. –
yep - Nullable 'için kısayol –