C# 如果为空,可以在bool和DateTime变量中分配什么?
上面的语句在从存储过程获取数据时给出了以下错误: 无法确定条件表达式的类型,因为它们之间没有隐式转换 'bool'和'System.DBNull' 无法确定条件表达式的类型,因为它们之间没有隐式转换 “DateTime”和“null”C# 如果为空,可以在bool和DateTime变量中分配什么?,c#,sql-server,C#,Sql Server,上面的语句在从存储过程获取数据时给出了以下错误: 无法确定条件表达式的类型,因为它们之间没有隐式转换 'bool'和'System.DBNull' 无法确定条件表达式的类型,因为它们之间没有隐式转换 “DateTime”和“null” 从DateTime DataTable rdrFeedback; using (rdrFeedback = CommonHelper.GetDataTable(CommandType.StoredProcedure, "[Crew].[Up_CM_SEAFARER
从
DateTime
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
也是如此,但是您必须指定null
作为备用值,而不是DBNull.value
DateTime? AcknowledgedOn = dRow["ACKNOWLEDGED_ON"] != DBNull.Value
? (DateTime?) Convert.ToDateTime(dRow["ACKNOWLEDGED_ON"].ToString())
: null;
还有,为什么要使用Convert.ToDateTime
?如果数据库具有日期时间值,则应为:
日期
或日期时间
类型DateTime
类型检索DateTime
实例存储为字符串,也不要将其检索为字符串
bool? AnswSix = dRow["ANSW_SIX"] != DBNull.Value
? (bool?)dRow["ANSW_SIX"]
: null;