Скажем, у меня есть этот класс:
class myclass
{
public int Field1{ get; set; }
public int? Field2 { get; set; } //Note Field2 is nullable
}
Я пытаюсь заполнить общий список данными, поступающими из базы данных. Поскольку GetSqlInt32 реализует INullable, я подумал, что приведенный ниже код будет работать. Это не так. Выдает ошибку, если поле Field2 равно null.
List<myclass> mylist=new List<myclass>();
int Field1_Ordinal = rdr.GetOrdinal("Field1");
int Field2_Ordinal = rdr.GetOrdinal("Field2");
SqlDataReader rdr = cmd.ExecuteReader(); //Execute a stored procedure to retrieve data from the database
while (rdr.Read())
{
mylist.Add(new myclass
{
Field1 = rdr.GetSqlInt32(Field1_Ordinal).Value,
Field2 = rdr.GetSqlInt32(Field2_Ordinal).Value //Error if field2 is null
});
}
Есть идеи, почему это не работает?