2016-07-19 12 views
0

Я пытаюсь добавить к моему соединению два условия, но я не могу. Я использую оператор ||.Как использовать два условия в инструкции соединения через linq?

from pay in db.Payments 
join FlyRpt in db.FlightReportTickets 
on pay.ObjectIdDepartue equals FlyRpt.DepartureId || 
    FlyRpt.DepartureId equals pay.ObjectIdReturn 

join prof in db.Profiles on FlyRpt.UserId equals prof.UserId 
where pay.ReserveType == 1 && 
    pay.Transactionsuccess && 
    pay.IssueDate >= fromDateTime && 
    pay.IssueDate <= toDateTime 

select new 
{ 
    FlyRpt.FullPrice 
}; 
+0

Какое сообщение об ошибке? – Default

+0

Невозможно применить оператор || к операнду типа System.Nullable и System.Nullable programmer138200

ответ

2

Вы должны использовать, где, если вы хотите реализовать или в присоединиться:

from pay in db.Payments 
from FlyRpt in db.FlightReportTickets 
where pay.ObjectIdDepartue == FlyRpt.DepartureId 
|| FlyRpt.DepartureId == pay.ObjectIdReturn 
join prof in db.Profiles on FlyRpt.UserId equals prof.UserId 
where pay.ReserveType == 1 && 
pay.Transactionsuccess && 
pay.IssueDate >= fromDateTime && 
pay.IssueDate <= toDateTime 
select new 
{ 
    FlyRpt.FullPrice, 
}; 
+0

или операции ...... – programmer138200

1

Вы можете использовать кросс-соединения, поскольку вы не можете использовать OR в других соединений:

from pay in db.Payments 
from FlyRpt in db.FlightReportTickets 
where 
    pay.ObjectIdDepartue = FlyRpt.DepartureId || 
    FlyRpt.DepartureId equals pay.ObjectIdReturn 
join prof in db.Profiles 
on FlyRpt.UserId equals prof.UserId 
where 
    pay.ReserveType == 1 && 
    pay.Transactionsuccess && 
    pay.IssueDate >= fromDateTime && 
    pay.IssueDate <= toDateTime 
select new 
{ 
    FlyRpt.FullPrice, 
};