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"的常数值。在此上下文中只支持基本类型或枚举类型。
原因是什么?如何解决?
添加.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;
}