2012-07-01 30 views
0

我想在LINQ中加入3個表。LINQ中超過2個表加入,範圍問題

var fromCities = from c in cityRepository.Cities 
          join r in routeRepository.Routes on c.Id equals r.FromCityId 
          join cr in rentDetailRepository.CarRentDetails on cr.CityId equals c.Id 
          select c; 

我得到的是cr和c不存在於第二個連接語句中? 有人可以幫忙嗎?

+0

則應更換c.Id絲毫r.FromCityId,如:加入的R上r.FromCityId routeRepository.Routes等於c.Id –

+1

在最後一個加入更改爲了:'加入CR在rentDetailRepository.CarRentDetails上c.Id等於cr.CityId' –

回答

3

變化,在過去的順序加入:

... 
join cr in rentDetailRepository.CarRentDetails on c.Id equals cr.CityId 

join clause (C# Reference)

連接子句執行同等聯接。換句話說,您只能在兩個鍵的相等位置上匹配 匹配項。其他類型的比較如 爲「大於」或「不等於」不受支持。爲了明確 所有連接都是等值鏈,join子句使用equals關鍵字 而不是==運算符。 equals關鍵字只能用於 連接子句,它與一個重要的方式不同於==運算符。 使用等號時,左鍵消耗外部源序列,並且右鍵消耗內部源。 外部來源僅在等於左側的 範圍內,而內部來源序列僅在 範圍內位於右側。

+0

謝謝。它現在有效。 「等於」不等於「==」。 – Brij