Twoje wymagania nie są w 100% jasne. W wierszu otwierającym poprosiłeś o rekordy „w których zakres dat wejściowych mieści się między dwoma polami dat”, ale w wierszu „Dodatkowo” sugerujesz, że nie chcesz zwracać rekordów, w których data rozpoczęcia spotkania nie jest równa data zakończenia Twojego wpisu. Uważam, że są to dwa różne wymagania, więc dam ci dwa różne zapytania.
Pierwsze zapytanie to:
from t1 in db.Appointments
where date1 >= t1.AppointmentStart
where date2 <= t1.AppointmentEnd
select t1;
Drugie zapytanie to:
from t1 in db.Appointments
where date2 > t1.AppointmentStart
where date1 < t1.AppointmentEnd
select t1;
Pierwsze zapytanie zwraca rekordy, które "zawierają" daty wejściowe.
Drugie zapytanie zwraca rekordy, które „nakładają się” na daty wprowadzenia.
Myślę, że bardziej sensowne jest, jeśli chcesz, aby zapytanie nakładało się, a to spełni Twoje wymaganie „14:00 - 15:00 nie zwraca wartości dla 15:00-16:00”.
Daj mi znać, jeśli popełniłem błąd, rozumiejąc Twoje wymagania i muszę wprowadzić zmiany.