2010-04-07 53 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連接來做,基本上 - 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

基本上像我們開始使用JOIN關鍵字之前的舊SQL語法。 – 2010-04-07 10:47:12