我正在实现服务器端代码以获取fullcalendar.io的事件。
有两种情况:
型号:
public Class CalendarEvent {
public DateTimeOffset Start { get; set; }
public DateTimeOffset? End { get; set; }
public bool AllDay { get; set; }
}
当https://fullcalendar.io加载视图时,它发出一个日期范围,基本上是日历上可以看到的日期(即10/8/18到12/8/18),我将其发送到我的控制器获取该范围内的相关事件。
我基本上需要检查以下内容:
伪示例:
var rep = context.GetRepository<Event>();
events = rep.Get().Where(e => /* need help here */).AsQueryable();
答案 0 :(得分:2)
我喜欢这个(重叠的日期)!通常,公式为:
var dateFrom = ;// start of week
var dateTo = ; // end of week
var events = rep.Get()
.Where(e => e.Start <= dateTo && e.End >= dateFrom)
.AsQueryable();
因为您需要范围内包含的东西,从范围开始并向外扩展,在范围之前开始并在范围内结束,并且在范围之前和之后开始。
但是,如果您需要处理nullable
.End
,则可能更像:
var dateFrom = ;// start of week
var dateTo = ; // end of week
var events = rep.Get()
.Where(e => e.Start <= dateTo && (e.End ?? e.Start) >= dateFrom)
.AsQueryable();
(非常)基本的模型可以帮助可视化: