0

我正在尝试在 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 在第二个 join 语句中不存在?有人可以帮忙吗?

4

1 回答 1

3

更改最后一个连接中的顺序:

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

join 子句(C# 参考)

连接子句执行等值连接。换句话说,您只能基于两个键的相等性进行匹配。不支持其他类型的比较,例如“大于”或“不等于”。为了明确所有连接都是等连接,连接子句使用 equals 关键字而不是 == 运算符。equals 关键字只能在连接子句中使用,它与 == 运算符在一个重要方面不同。使用equals时,左键消耗外部源序列,而右键消耗内部源。外部源仅在 equals 左侧的范围内,内部源序列仅在右侧的范围内。

于 2012-07-01T11:43:12.087 回答