您好我似乎无法解决此强制转换操作.我收到错误:
字符串未被识别为有效的布尔值
为线
isKey = Convert.ToBoolean(row["IsKey"].ToString());
我正在使用一个DataReader
来获取我的表Schema.IsKey
目前null
在我的数据库中无处不在.我基本上想要一个true
或一个false
结果.
tableSchema = myReader.GetSchemaTable(); foreach (DataRow row in tableSchema.Rows) { string columnName = row["ColumnName"].ToString(); string columnType = row["DataTypeName"].ToString(); bool isKey = Convert.ToBoolean(row["IsKey"].ToString());
gunr2171.. 21
首先,使用此格式从以下位置获取值DataRow
:
string columnName = row.Field("ColumnName"); string columnType = row.Field ("DataTypeName"); //this uses your first and second variable call as an example
这强烈定义了返回值并为您进行转换.
你的问题是你有一个列bit
(或者至少我希望它有点),但也允许nulls
.这意味着c#中的数据类型是a bool?
.用这个:
bool? isKey = row.Field("IsKey");
你的第二个问题(在评论中):
如果布尔?isKey返回NULL如何将其转换为false?
最简单的方法是使用 Null-Coalescing Operator
bool isKey = row.Field("IsKey") ?? false;
这说:"首先给我的不是空的,无论是列值还是"假".
首先,使用此格式从以下位置获取值DataRow
:
string columnName = row.Field("ColumnName"); string columnType = row.Field ("DataTypeName"); //this uses your first and second variable call as an example
这强烈定义了返回值并为您进行转换.
你的问题是你有一个列bit
(或者至少我希望它有点),但也允许nulls
.这意味着c#中的数据类型是a bool?
.用这个:
bool? isKey = row.Field("IsKey");
你的第二个问题(在评论中):
如果布尔?isKey返回NULL如何将其转换为false?
最简单的方法是使用 Null-Coalescing Operator
bool isKey = row.Field("IsKey") ?? false;
这说:"首先给我的不是空的,无论是列值还是"假".