我正在尝试在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? 有人可以帮忙吗?
答案 0 :(得分:3)
更改上次加入的顺序:
...
join cr in rentDetailRepository.CarRentDetails on c.Id equals cr.CityId
join子句执行equijoin。换句话说,你只能基础 匹配两个键的相等性。其他类型的比较如此 不支持“大于”或“不等于”。说清楚 所有连接都是equijoins,join子句使用equals关键字 而不是==运算符。 equals关键字只能用于 join子句,它与一个重要的方式不同于==运算符。 使用equals,左键消耗外部源序列,然后使用 右键消耗内部源。 外部来源仅在范围内 在equals的左侧,内部源序列仅在 范围在右侧。