Linq to sql 将联接SQL转换为LINQ到SQL方法语法

Linq to sql 将联接SQL转换为LINQ到SQL方法语法,linq-to-sql,Linq To Sql,我有一个MVC4WebAPI存储库,可以使用LINQtoSQL方法语法从数据库检索数据。到目前为止,我为a实用程序编写的代码(不多): public IQueryable<Vehicle> Vehicles(int driverId_Vehicles) { ...?... } 我需要帮助将此查询转换为LINQ方法语法以返回IQueryable。选择车辆* 来自车辆 内连接驱动位 车上.Id=DriverHabit.VehicleId 其中DriverHabit.Id=dri

我有一个MVC4WebAPI存储库,可以使用LINQtoSQL方法语法从数据库检索数据。到目前为止,我为a实用程序编写的代码(不多):

public IQueryable<Vehicle> Vehicles(int driverId_Vehicles)
{
    ...?...
}
我需要帮助将此查询转换为LINQ方法语法以返回IQueryable。

选择车辆* 来自车辆 内连接驱动位 车上.Id=DriverHabit.VehicleId 其中DriverHabit.Id=driverId

var vehicle = from v in _context.vehicle              
          join dh in _context.driverhabit on v.Id equals dh.VehicleId
          where dh.Id = driverId
          select { v, dh }

return vehicle.ToList();

看起来关联
车辆
-
驾驶员位
为1:n。您的
车辆
类中应该有导航属性
DriverHabits
,因此您不必加入。只需访问导航属性。

DriverHabit是驾驶员和车辆之间的连接表。一个驾驶员确实有很多驾驶员位,但每个驾驶员位都有一辆车,而且只有一辆车。在DriverHabit表中,DriverId是Driver中Id字段中的外键,而VehicleId是Vehicle表中的外键。好吧,那就开始吧!使用导航属性,让LINQtoSQL担心连接。哦!我遵循了使用实体框架的教程,但我没有意识到,但我已经设置了导航属性,我只是不知道如何使用它。谢谢你的提示!where后面没有“select”,ToList()应该改为Queryable(),但方向正确。然而,这是SQL语法,而不是方法语法。
var vehicle = from v in _context.vehicle              
          join dh in _context.driverhabit on v.Id equals dh.VehicleId
          where dh.Id = driverId
          select { v, dh }

return vehicle.ToList();