Non sono chiaro al 100% sulle tue esigenze. Nella riga di apertura hai chiesto record "in cui l'intervallo di date di input cade tra due campi di date", ma nella riga "in aggiunta" indichi che non vuoi restituire record in cui la data di inizio dell'appuntamento non è uguale la data di fine del tuo input. Ritengo che questi siano due requisiti diversi, quindi ti darò due domande diverse.
La prima domanda è:
from t1 in db.Appointments
where date1 >= t1.AppointmentStart
where date2 <= t1.AppointmentEnd
select t1;
La seconda domanda è:
from t1 in db.Appointments
where date2 > t1.AppointmentStart
where date1 < t1.AppointmentEnd
select t1;
La prima query restituisce record che "contengono" le date di input.
La seconda query restituisce record che "si sovrappongono" alle date di input.
Penso che abbia più senso che tu voglia la query di sovrapposizione e questa soddisferà il tuo requisito "14:00 - 15:00 non restituisce un valore per 15:00-16:00".
Fammi sapere se ho commesso un errore nel comprendere le tue esigenze e se devo apportare modifiche.