Tôi không rõ ràng 100% về yêu cầu của bạn. Trong dòng mở đầu, bạn đã yêu cầu các bản ghi "trong đó phạm vi ngày đầu vào nằm giữa hai trường ngày", nhưng trong dòng "Ngoài ra", bạn ngụ ý rằng bạn không muốn trả lại các bản ghi mà ngày bắt đầu cuộc hẹn không bằng ngày kết thúc đầu vào của bạn. Tôi coi đây là hai yêu cầu khác nhau, vì vậy tôi sẽ cung cấp cho bạn hai truy vấn khác nhau.
Truy vấn đầu tiên là:
from t1 in db.Appointments
where date2 > t1.AppointmentStart
where date1 < t1.AppointmentEnd
select t1;
Truy vấn thứ hai là:
from t1 in db.Appointments
where date2 > t1.AppointmentStart
where date1 < t1.AppointmentEnd
select t1;
Truy vấn đầu tiên trả về các bản ghi "chứa" ngày nhập.
Truy vấn thứ hai trả về các bản ghi "trùng lặp" ngày nhập.
Tôi nghĩ rằng bạn muốn truy vấn chồng chéo sẽ hợp lý hơn và truy vấn này sẽ đáp ứng yêu cầu "14:00 - 15:00 không trả về giá trị cho 15:00-16:00".
Hãy cho tôi biết nếu tôi hiểu sai yêu cầu của bạn và cần thực hiện bất kỳ thay đổi nào.