Как я могу условно присоединиться к запросам LINQ? - PullRequest
0 голосов
/ 07 апреля 2010

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

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

Как это можно закодировать как запрос LINQ?

1 Ответ

7 голосов
/ 07 апреля 2010

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

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

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.

...