Разница в том, что в связанном вопросе речь идет о нетипизированном значении (т.е. object
) через индексатор.Когда вы проходите через .SomeField
, тип уже включен - так что это может быть int
и т. Д. И не имеет смысла пробовать IsDBNull
на int
, так как int
может никогда быть DBNull
.
По сути SomeField
является оберткой для (извините за акцент C # ...)
public int SomeField {
get { return (int) this["someFieldName"]; }
set { this["someFieldName"] = value; }
}
Я не огромный DataTable
человек, но вы можете попробовать проверить это по имени / индексу / столбцу;или пометить столбец как обнуляемый, чтобы он был Nullable<int>
(в примере выше).