鉴于我有三张桌子,车辆,汽车,自行车。Cars 和 Bikes 都有一个 VehicleID FK 链接回 Vehicles。
我想计算所有像这样的汽车。
Vehicles.Select(x=>x.Car).Count();
但是,这将为我提供所有车辆行,并将 null 放在车辆类型为 Bikes 的行中。
我正在使用 linqpad 来执行此操作并看到 sql 语句我意识到它这样做的原因是因为在 x.Car 连接上它在车辆和汽车之间执行了 LEFT OUTER JOIN,这意味着它将返回所有车辆。如果我将查询更改为仅使用 JOIN,那么它会按预期工作。
有没有办法告诉 linq 使用这种类型的语法进行连接?最终我想做类似的事情:
Vehicles.Select(x=>x.Car.CountryID).Distinct().Dump();
但是由于这个错误:
InvalidOperationException: The null value cannot be assigned to a member with type System.Int32 which is a non-nullable value type.
我最终这样做:
Vehicles.Where(x=>x.Car!=null).Select(x=>x.Car.CountryID).Distinct().Dump();