一尘不染

将空值分配给SqlParameter

c#

下面的代码给出了一个错误-“没有从DBnull到int的隐式转换”。

SqlParameter[] parameters = new SqlParameter[1];    
SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int);
planIndexParameter.Value = (AgeItem.AgeIndex== null) ? DBNull.Value : AgeItem.AgeIndex;
parameters[0] = planIndexParameter;

阅读 233

收藏
2020-05-19

共1个答案

一尘不染

问题在于?:操作员无法确定返回类型,因为您正在返回int不兼容的值或DBNull类型值。

您当然可以将AgeIndex的实例转换为object可以满足?:要求的类型。

您可以??按以下方式使用null-coalescing运算符

SqlParameter[] parameters = new SqlParameter[1];     
SqlParameter planIndexParameter = new SqlParameter("@AgeIndex", SqlDbType.Int);
planIndexParameter.Value = (object)AgeItem.AgeIndex ?? DBNull.Value;
parameters[0] = planIndexParameter;

这是MSDN文档中用于?:操作员的引言,解释了该问题。

first_expression和second_expression的类型必须相同,或者必须存在从一种类型到另一种类型的隐式转换。

2020-05-19