/ / Otrzymuj bieżące wydarzenia w EF core - entity-framework, asp.net-core, ef-core-2.0

Otrzymuj bieżące wydarzenia w rdzeniu EF - entity-framework, asp.net-core, ef-core-2.0

Mam kilka zdarzeń w bazie danych dla mojej aplikacji rejestracji zdarzeń, w których daty mogą być ustawione przez

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

Oba pola są zerowalne, a jeśli chcę, chcę otrzymywać bieżące zdarzenia 1) DateStart to ta sama data co dzisiaj, lub 2) Teraz jest pomiędzy DateStart i 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();
}

Jednak mój powyższy kod zwraca: Operator "<=" cannot be applied to operands of type "bool" and "DateTime"

Odpowiedzi:

1 dla odpowiedzi № 1

Przyczyną błędu była pierwsza część warunku i.DateStart.Value.Date <= DateTime.Now.Date zostanie zatwierdzony i zostanie przekonwertowany na Boolean. Potem próbowałeś porównać Boolean z DateTime tak jak <= i.DateEnd.Value.Date. Dlatego właśnie rozdzielam te dwa warunki && operator.

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


0 dla odpowiedzi nr 2

To powinna być poprawna forma twojego kodu:

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