可空对象在存储过程中传递时必须有一个值

Nullable object must have a value while pass in stored procedure

我正在尝试将 ClearDateC 作为参数发送给过程,但它抛出了一个错误

nullable object must have value.

我的代码:

foreach (var item in bankRecos)
{
   DataTable Dt ;

   DateTime ChqDateC = Convert.ToDateTime(item.ChqdateDisplay);

   Dt = MD.GetBankReco_GetBankRecoUpdate(item.CommentC, (DateTime)item.ClearDateC, item.Chqno, ChqDateC);

   if (Dt.Rows.Count > 0 && Dt.Rows[0]["Status"].ToString() == "1")
   {
       status = "Success";
   }
   else
   {
       status = "Error : " + Dt.Rows[0]["Message"].ToString().Replace('\n', '_');
   }
}

请帮我解决这个问题。

您可以更改调用以检查可为 null 的 DateTime 字段是否具有值,然后使用 Value 属性 之类的

var cleardate = item.ClearDateC.HasValue ? (DateTime)item.ClearDateC : DateTime.Now;
MD.GetBankReco_GetBankRecoUpdate(item.CommentC, cleardate, item.Chqno, ChqDateC);