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

时间:2010-04-07 10:20:11

标签: linq join conditional

如果我有两张桌子; 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 个答案:

答案 0 :(得分: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 };

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