DateTime参数为空导致异常

本文关键字:异常 参数 DateTime | 更新日期: 2023-09-27 18:15:43

我试图创建一个API方法,这将允许按日期过滤条目。我想让使用两个参数- startDate和endDate。第二个选项是可选的。

public IEnumerable<Recommendation> GetRecommendationByDate(DateTime startDate, DateTime? endDate) 
{
    if (endDate == null) 
    {
        endDate = DateTime.Now;
    }
    var output = db.Recommendations.Where(r => r.IsPublished == true &&
                                               r.CreatedDate.CompareTo(startDate) > 0 &&
                                               r.CreatedDate.CompareTo(endDate) < 0)
                                   .ToList();
        return output;
    }

在我添加了nullable符号之后,当第二个参数(endDate)不为空时,方法会产生异常。当它为空时,没有任何问题。

异常声音:

无法创建类型为"System.Object"的常数值。在此上下文中只支持基本类型或枚举类型。

原因是什么?如何解决?

DateTime参数为空导致异常

添加.HasVale并检查endDate是否包含该值,如果包含则使用endDate.Value,如下所示

public IEnumerable<Recommendation> GetRecommendationByDate(DateTime startDate, DateTime? endDate) 
    {
        if (endDate == null) 
        {
            endDate = DateTime.Now;
        }
        var output = db.Recommendations.Where(r => r.IsPublished == true &&
                                                   r.CreatedDate.CompareTo(startDate) > 0 &&
                                                   r.CreatedDate.CompareTo(endDate.HasValue ? endDate.Value : (The default you want to put when endDate is null)) < 0)
                                       .ToList();
            return output;
        }