J'ai quelques événements dans une base de données pour mon application d'enregistrement d'événements, où les dates peuvent être définies par
public DateTime? DateStart { get; set; }
public DateTime? DateEnd { get; set; }
Les deux champs sont nuls, et je veux obtenir les événements en cours si eiter 1) DateStart est la même date qu'aujourd'hui, ou 2) Est maintenant entre DateStart et 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();
}
Cependant, mon code ci-dessus renvoie: Operator "<=" cannot be applied to operands of type "bool" and "DateTime"
Réponses:
1 pour la réponse № 1La raison de l'erreur était la première partie de la condition i.DateStart.Value.Date <= DateTime.Now.Date
sera validé et sera converti en Boolean
. Après que vous essayiez de comparer Boolean
avec DateTime
ainsi <= i.DateEnd.Value.Date
. C’est pourquoi j’ai séparé les deux conditions avec &&
opérateur.
(DateTime.Now.Date >= i.DateStart.Value.Date && DateTime.Now.Date <= i.DateEnd.Value.Date)
0 pour la réponse № 2
Cela devrait être la forme correcte de votre code:
(DateTime.Now.Date >= i.DateStart.Value.Date && DateTime.Now.Date <= i.DateEnd.Value.Date)