Je ne suis pas sûr à 100% de vos besoins. Dans votre ligne d'ouverture, vous avez demandé des enregistrements "où la plage de dates d'entrée se situe entre deux champs de date", mais dans la ligne "En outre", vous impliquez que vous ne voulez pas renvoyer les enregistrements où la date de début du rendez-vous n'est pas égale la date de fin de votre saisie. Je considère qu'il s'agit de deux exigences différentes, je vais donc vous donner deux requêtes différentes.
La première requête est :
from t1 in db.Appointments
where date1 >= t1.AppointmentStart
where date2 <= t1.AppointmentEnd
select t1;
La deuxième requête est :
from t1 in db.Appointments
where date2 > t1.AppointmentStart
where date1 < t1.AppointmentEnd
select t1;
La première requête renvoie les enregistrements qui "contiennent" les dates d'entrée.
La deuxième requête renvoie les enregistrements qui "chevauchent" les dates d'entrée.
Je pense qu'il est plus logique que vous souhaitiez la requête de chevauchement et celle-ci répondra à votre exigence "14h00 - 15h00 ne renvoie pas de valeur pour 15h00-16h00".
Faites-moi savoir si j'ai fait une erreur dans la compréhension de vos exigences et si j'ai besoin d'apporter des modifications.