在 EF 核心中获取正在进行的事件

Get ongoing events in EF core

我的活动注册申请的数据库中有一些活动,日期可能由

设置
public DateTime? DateStart { get; set; }
public DateTime? DateEnd { get; set; }

这两个字段都可以为空,如果有任何一个,我都想获得正在进行的事件 1) DateStart 与今天的日期相同,或者 2) 现在介于 DateStart 和 DateEnd

之间
public async Task<List<EventInfo>> GetOngoingEventsAsync() 
{
    return await _db.EventInfos
        .Where(i => 
            i.Published && 
            i.DateStart.Value.Date == DateTime.Now.Date ||
            i.DateStart.Value.Date <= DateTime.Now.Date <= i.DateEnd.Value.Date)
        .OrderBy(s => s.DateStart)
        .ToListAsync();
}

但是我上面的代码returns:Operator '<=' cannot be applied to operands of type 'bool' and 'DateTime'

这应该是您的代码的正确形式:

(DateTime.Now.Date >= i.DateStart.Value.Date && DateTime.Now.Date <= i.DateEnd.Value.Date)

错误背后的原因是条件 i.DateStart.Value.Date <= DateTime.Now.Date 的第一部分将被验证并将转换为 Boolean。之后,您尝试将 BooleanDateTime 进行比较,例如 <= i.DateEnd.Value.Date。所以这就是为什么我用 && 运算符将两个条件分开。

(DateTime.Now.Date >= i.DateStart.Value.Date && DateTime.Now.Date <= i.DateEnd.Value.Date)