LINQ中有超过2个表JOIN,范围问题

时间:2012-07-01 11:18:50

标签: c# linq join

我正在尝试在LINQ中加入3个表。

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? 有人可以帮忙吗?

1 个答案:

答案 0 :(得分:3)

更改上次加入的顺序:

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

join clause (C# Reference)

  

join子句执行equijoin。换句话说,你只能基础   匹配两个键的相等性。其他类型的比较如此   不支持“大于”或“不等于”。说清楚   所有连接都是equijoins,join子句使用equals关键字   而不是==运算符。 equals关键字只能用于   join子句,它与一个重要的方式不同于==运算符。   使用equals,左键消耗外部源序列,然后使用   右键消耗内部源。 外部来源仅在范围内   在equals的左侧,内部源序列仅在   范围在右侧。