将值从可空日期时间传递到 Crystal 报告中的日期时间变量

Passing value from Nullable Date Time to Date Time variable in Crystal Report

在我的 ASP.NET MVC 和 Entity Framework 应用程序中,我将数据库 table 列 Approved_Date 创建为可为空。

public DateTime? Approved_Date { get; set; }

然后当我将数据调用到报表时,我创建了一个视图模型并创建了 属性 作为,

public DateTime ApprovedDateDM { get; set; }

在查询中,我无法将数据库 table 中的 Approved_Date 值分配给视图模型 ApprovedDateDM。我遇到错误

Cannot implicitly convert type 'type1' to 'type2'. An explicit conversion exists (are you missing a cast?)

select new SuspensApprovedList {
     ApprovedDateDM = pa.Approved_Date, //Error
     ApprovedDateFM = se.FinanceApprovedDate, //Error
     ApproverDM = ae.EmpName,
     ApproverDessignationDM = ad.Designation,
     ApproverDessignationFM = d.Designation,
     ApproverFM = fe.EmpName,
}).ToList();

我可以简单地将视图模型 属性 更改为可为空并解决问题,但是当我将此视图模型数据传递给 Crystal 报告时,我收到另一个错误 Crystal报告不允许空值。

有什么办法可以解决这个问题吗?

尝试这样的事情

 select new SuspensApprovedList {
     ApprovedDateDM = pa.Approved_Date.HasValue?pa.Approved_Date : DateTime.MinValue, //or any default value you prefer.
     ApprovedDateFM = pa.FinanceApprovedDate.HasValue?pa.FinanceApprovedDate: DateTime.MinValue,
     ApproverDM = ae.EmpName,
     ApproverDessignationDM = ad.Designation,
     ApproverDessignationFM = d.Designation,
     ApproverFM = fe.EmpName,

 }).ToList();

或者您可以使用

 select new SuspensApprovedList {
     ApprovedDateDM = pa.Approved_Date.GetValueOrDefault(), // You can pass the default value also like GetValueOrDefault(defaultDate)
     ApprovedDateFM = pa.FinanceApprovedDate.GetValueOrDefault(),
     ApproverDM = ae.EmpName,
     ApproverDessignationDM = ad.Designation,
     ApproverDessignationFM = d.Designation,
     ApproverFM = fe.EmpName,

 }).ToList();

您还可以使用 null 合并运算符(??= 或 ?? ),如果值不为空,它将 return 值,或者 return 运算符右侧的值

如果你想return当前日期时间以防可空的一个为空,你可以使用以下

批准日期DM = Approved_Date ?? DateTime.Now