具有多连接和多条件的Linq查询

具有多连接和多条件的Linq查询,linq,join,telerik,Linq,Join,Telerik,我正在使用Telerik数据访问来执行或映射 我试图使用Linq执行连接查询,但不确定如何正确进行 原始sql查询由以下公式给出: 'SELECT O.OPS_LEG_ID, O.ATD_DATE, O.DEP_AIRPORT_ACT, O.ARR_AIRPORT_ACT, O.ATA_DATE, '+ 'O.FL_LOG_ATD_DATE, O.FL_LOG_ATA_DATE, O.FL_LOG_DEP_AIRPORT, O.FL_LOG_

我正在使用Telerik数据访问来执行或映射

我试图使用Linq执行连接查询,但不确定如何正确进行

原始sql查询由以下公式给出:

'SELECT O.OPS_LEG_ID, O.ATD_DATE, O.DEP_AIRPORT_ACT, O.ARR_AIRPORT_ACT, O.ATA_DATE,  '+
                          'O.FL_LOG_ATD_DATE, O.FL_LOG_ATA_DATE, O.FL_LOG_DEP_AIRPORT, O.FL_LOG_ARR_AIRPORT, '+
                          'O.FL_NB, O.DESIGNATOR, O.FL_LOG_ID, O.FL_LOG_STATUS '+
                          'FROM CREW_ROT_ROLE CR, OPS_LEG O, CREW_ROLES R, CREW_PAIRING_CMP CP '+
                          'WHERE CR.ROLE_CDE = R.ROLE_CDE '+
                            'AND CR.CREW_ROTATION_ID = CP.CREW_ROTATION_ID '+
                            'AND CP.OPS_LEG_ID = O.OPS_LEG_ID '+
                            'AND CR.CREW_CDE = :CREW_CDE '+
                            'AND O.ATD_DATE >= :D_FROM '+
                            'AND O.ATD_DATE <= :D_TO '+
                            //'AND R.ROLE_TYPE = 0 '+
                          'ORDER BY O.ATD_DATE
尝试上一个查询时,会引发异常:

“标识符‘ROLE_CDE’不是的参数、变量或字段 “FlightLogEntities.OPS_LEG”。如果“ROLE_CDE”是一个属性,请添加 字段别名或存储属性,或将其声明为字段的 别名。”


我不知道怎么继续。使用Linq联接的正确查询是什么?谢谢

如果您使用的是类似ORM的实体框架,那么概念模型将是类的混合,这将提供以对象为中心的数据视图。

因此,您将在对象上使用Linq,在这种情况下,您不需要像在SQL中对数据库那样为连接编写查询。概念模型将包含使用导航属性将具有关系的对象,要访问导航属性,可以将其作为对象的属性访问

例如,如果数据库中有两个表,则为Customer&Orders。以下SQL语句将返回1号客户的所有订单:

SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
INNER JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
Where Customers.CustomerID = 1 
如果我们使用EF-generate从数据库生成概念模型,我们将获得Customer和Order的类,Customer类将具有ICollection属性。因此,如果您需要与上面的SQL查询相同的结果,您可以按照以下方式进行

var CustomerOne = context.Customers.Where(x => x.CustomerID == 1);
var ordersForCustomerOne = CustomerOne.Orders;

你可以试试类似的东西

var k = from r in dataContext.Order_Details
        join t in dataContext.Orders on r.OrderID equals t.OrderID
        select r.OrderID   ;

我也有类似的问题。你找到解决办法了吗?
var k = from r in dataContext.Order_Details
        join t in dataContext.Orders on r.OrderID equals t.OrderID
        select r.OrderID   ;