Получить текущие события в ядре EF - PullRequest
0 голосов
/ 10 мая 2018

У меня есть некоторые события в базе данных для моего приложения регистрации событий, где даты могут быть установлены

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();
}

Однако мой код выше возвращает: Operator '<=' cannot be applied to operands of type 'bool' and 'DateTime'

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Причиной ошибки была первая часть условия i.DateStart.Value.Date <= DateTime.Now.Date, которая будет проверена и будет преобразована в Boolean. После этого вы пытались сравнить Boolean с DateTime примерно так <= i.DateEnd.Value.Date. Вот почему я разделяю два условия с помощью оператора &&.

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

0 голосов
/ 11 мая 2018

Это должна быть правильная форма вашего кода:

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