DateTime - это тип значения, который может содержать только допустимую дату и время. Обычно это делается путем проверки вашего значения, возвращаемого из базы данных, чтобы узнать, есть ли оно DBNull.Value, и если да, установите DateTime на специальное значение, такое как DateTime.MinValue, которое представляет Null.
В качестве альтернативы вы можете использовать DateTime? который является типом данных DateTime, допускающим значение NULL, и вы можете фактически присвоить ему значение NULL (обычный .Net null, а не DBNull).
DateTime foo;
if (row["SomeField"] == DBNull.Value) {
foo = DateTime.MinValue;
} else {
foo = (DateTime)row["SomeField"];
}
Вы можете сделать этот синтаксис немного лучше, создав метод расширения для DataRow следующим образом:
public static void ToDateTime(this DataRow row, string columnName) {
if (row[columnName] == DBNull.Value) {
return DateTime.MinValue;
} else {
return (DateTime)row[columnName];
}
}
то вы можете переписать исходный код следующим образом:
DateTime foo = row.ToDateTime("SomeField");
person
Dylan Smith
schedule
14.10.2011