DataTable rdrFeedback;
using (rdrFeedback = CommonHelper.GetDataTable(CommandType.StoredProcedure, "[Crew].[Up_CM_SEAFARER_FEEDBACK]", sqlParams.ToArray()))
{
foreach(DataRow dRow in rdrFeedback.Rows)
{
bool? AnswSix = dRow["ANSW_SIX"] != DBNull.Value ? (bool)dRow["ANSW_SIX"] : DBNull.Value;
DateTime? AcknowledgedOn = dRow["ACKNOWLEDGED_ON"] != DBNull.Value ? Convert.ToDateTime(dRow["ACKNOWLEDGED_ON"].ToString()) : null;
}
}
上面的语句在从存储过程中获取数据时会出现此错误:
无法确定条件表达式的类型,因为之间没有隐式转换 'bool'和'System.DBNull'。
无法确定条件表达式的类型,因为之间没有隐式转换 'DateTime'和'null'。
答案 0 :(得分:1)
从DateTime?
DateTime
DateTime? AcknowledgedOn = dRow["ACKNOWLEDGED_ON"] != DBNull.Value
? (DateTime?) Convert.ToDateTime(dRow["ACKNOWLEDGED_ON"].ToString())
: null;
bool
也是如此,但您必须指定null
作为备用值而不是DBNull.Value
。
bool? AnswSix = dRow["ANSW_SIX"] != DBNull.Value
? (bool?)dRow["ANSW_SIX"]
: null;
另外你为什么要使用Convert.ToDateTime
?如果您的数据库具有日期时间值,则应为:
Date
或DateTime
类型DateTime
类型不要将DateTime
个实例存储为字符串,也不要将它们检索为字符串。