我正在尝试创建一个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;
}
在我添加了可空符号后,当第二个参数(endDate)不为null时,方法会产生异常。当它为null时,没有任何问题。
异常声音:
无法创建“System.Object”类型的常量值。在此上下文中仅支持原始类型或枚举类型。
原因是什么以及如何解决?
答案 0 :(得分:1)
添加.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;
}