Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CS0173无法确定条件表达式的C#类型,因为';System.DateTime';和';System.DBNull';_C#_Dbnull - Fatal编程技术网

CS0173无法确定条件表达式的C#类型,因为';System.DateTime';和';System.DBNull';

CS0173无法确定条件表达式的C#类型,因为';System.DateTime';和';System.DBNull';,c#,dbnull,C#,Dbnull,我有一个MS SQL本地数据库,它允许列字段具有空值。但是,当我尝试将(DateTime?)null设置为字段时,出现了一个异常“System.ArgumentException无法将列'DeliveryTime'设置为null。请改用DBNull。”。所以我尝试将(DateTime?)null替换为DBNull.value。然后出现了一个编译错误 “CS0173 C#无法确定条件表达式的类型 因为“System.DateTime”和之间没有隐式转换 “System.DBNull” 我正在使用M

我有一个MS SQL本地数据库,它允许列字段具有空值。但是,当我尝试将(DateTime?)null设置为字段时,出现了一个异常“System.ArgumentException无法将列'DeliveryTime'设置为null。请改用DBNull。”。所以我尝试将(DateTime?)null替换为DBNull.value。然后出现了一个编译错误

“CS0173 C#无法确定条件表达式的类型 因为“System.DateTime”和之间没有隐式转换 “System.DBNull”

我正在使用MS VS 2017社区。我该怎么办

DataRow row; 
string rs; 
DateTime dt; 

row["DeliveryTime"] = DateTime.TryParse(rs, out dt) ? dt : (DateTime?) null;
// I replaced (DateTime?) null to DBNull.Value and got a compile error

这听起来像是你正在做的事情(无论是作业还是电话——基本上是某种表达):

或者类似的东西;问题是,条件运算符的两个结果需要有一个共同的类型。最简单的解决办法是

((object)val) ?? DBNull.Value

这将使用空合并,以及一个没有值的
null
将转换为
null
引用的事实。

请向我们显示设置这些值的代码。请发布您的代码和更多详细信息。DataRow row;字符串rs;日期时间dt;行[“DeliveryTime”]=DateTime.TryParse(rs,out dt)?dt:(DateTime?)null;//我将(DateTime?)null替换为DBNull.Value,并得到一个编译错误
((object)val) ?? DBNull.Value