如何在LINQ查询中有条件地加入?

Ste*_*ane 0 linq conditional join

如果我有两张桌子; 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
Run Code Online (Sandbox Code Playgroud)

如何将其编码为LINQ查询?

Jon*_*eet 7

你不能用LINQ连接来做,基本上 - 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 };
Run Code Online (Sandbox Code Playgroud)

这可能最终会在转换后的SQL中使用相同的连接.