2010-04-07 5 views
0

Если у меня есть две таблицы; Драйверы ключом от DriverId и экскурсии с иностранными ключами DriverId и CoDriverId, и я хочу, чтобы найти все поездки, где водитель либо водитель или штурман я мог бы код это в Transact-SQL, какКак я могу условно связать запросы LINQ?

select d.DriverId, t.TripId 
from Trips t inner join Drivers d 
on t.DriverId = d.DriverId or t.CoDriverId = d.DriverId 

Как это могло быть закодирован как запрос LINQ?

ответ

7

Вы не можете сделать это с LINQ join, в основном - LINQ поддерживает только equijoins.

Вы можете однако сделать:

var query = from trip in db.Trips 
      from driver in db.Drivers 
      where trip.DriverId == driver.DriverId || 
        trip.CoDriverId == driver.DriverId 
      select new { driver.DriverId, trip.TripId }; 

Это вполне может в конечном итоге с тем же присоединиться к преобразованной SQL.

+0

В принципе, как старый синтаксис SQL, прежде чем мы начали использовать JOIN-ключевые слова. –

Смежные вопросы