Je souhaite interroger une table avec certaines conditions en fonction de la saisie par l'utilisateur.LINQ - Multiple Où basé sur les conditions
Je possède ce code:
IQueryable<Turno> turnoQuery = dc.Turno;
if (helper.FechaUltimaCitaDesde != DateTime.MinValue)
{
turnoQuery = turnoQuery.Where(t => t.TurnoFecha >= helper.FechaUltimaCitaDesde);
}
if (helper.FechaUltimaCitaHasta != DateTime.MinValue)
{
turnoQuery = turnoQuery.Where(t => t.TurnoFecha <= helper.FechaUltimaCitaHasta);
}
if (helper.SoloCitasConsumidas)
{
turnoQuery = turnoQuery.Where(t => t.Estado == Convert.ToInt32(EnmEstadoDelTurno.Consumido));
}
else if(helper.AnuladoresDeCitas)
{
turnoQuery = turnoQuery.Where(t => t.Estado == Convert.ToInt32(EnmEstadoDelTurno.Cancelado) || t.Estado == Convert.ToInt32(EnmEstadoDelTurno.Ausente));
}
Le problème que je vais avoir est que la clause « où » est écrasé par le dernier.
Quelle est la bonne façon de faire quelque chose comme ça sur LINQ?
L'objet "helper" est une classe personnalisée stockant les dates d'entrée utilisateur pour cet exemple.
Utilisez le bouton de code s'il vous plaît pour rendre votre code plus lisible. – Femaref
Qu'entendez-vous par "se trémousse avec le dernier"? –
J'ai déjà modifié pour rendre le code plus lisible. Était une mauvaise pâte. Ce que je veux dire par "obtient étagé .." est que la seule où la clause qui reste sur la requête est le dernier. C'est comme si elle ne supporte que la clause ONE et utilise toujours le dernier auquel elle a accédé. Est-ce plus clair maintenant? Sry pour mon anglais: S – Bathan