Все эти сравнения - сравнения в одной строке. В вашем заявлении говорится, что нужно найти каждую строку, i
, так, чтобы TruckID i-й строки был равен TruckID (обратите внимание, что вам не нужно повторять этот тест в каждом подусловии), и даты начала / окончания которого совпадают с из подусловий. Если вы не получаете ожидаемые данные, то я предполагаю, что ваши условия не соответствуют вашим требованиям.
Используя закон распределения, вы можете переписать его как:
var issues =
from i in ReadOnlyContext.Issues
where i.TruckID == truckID &&
(i.OutOfOrderStart < startDate && i.OutOfOrderEnd > endDate
|| i.OutOfOrderStart > startDate && i.OutOfOrderEnd < endDate
|| i.OutOfOrderStart < startDate && i.OutOfOrderStart < endDate
|| i.OutOfOrderStart > startDate && i.OutOfOrderEnd > endDate)
select i;