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