C#Linq连接的条件和条件

C#Linq连接的条件和条件,c#,sql,linq,linq-to-sql,ssms,C#,Sql,Linq,Linq To Sql,Ssms,我正试图弄清楚如何在我的Linq2SQL语句中包含和条件 因此,我的SQL在SSMS中看起来 SELECT TBL1.Field1, TBL2.Field2 FROM TABLE1 AS TBL1 INNER JOIN TABLE2 AS TBL2 ON TBL1.TBL2ID = TBL2.ID INNER JOIN TABLE3 AS TBL3 ON TBL1.TBL3ID = TBL3.ID AND TBL3.SQID = 20 WHERE TBL1.ID = 3 我的LINQ如下所示

我正试图弄清楚如何在我的
Linq2SQL
语句中包含
条件

因此,我的SQL在SSMS中看起来

SELECT TBL1.Field1, TBL2.Field2 FROM TABLE1 AS TBL1
INNER JOIN TABLE2 AS TBL2 ON TBL1.TBL2ID = TBL2.ID 
INNER JOIN TABLE3 AS TBL3 ON TBL1.TBL3ID = TBL3.ID AND TBL3.SQID = 20
WHERE TBL1.ID = 3
我的LINQ如下所示

var linq = (from tbl1 in Table1
            join tbl2 in Table2 on tbl1.tabl2ID equals tbl2.ID
            join tbl3 in Table3 on tbl1.tabl3ID equals tbl3.ID
            where tbl1.ID = 3
            select new { field1 = tbl1.field1, field2 = tbl2.field2 
            }).ToList();

那么,如何在
tbl3
的第二次连接中使用
?有什么建议吗?

请加上where子句
tbl3.SQID==20

var linq = (from tbl1 in Table1
            join tbl2 in Table2 on tbl1.tabl2ID equals tbl2.ID
            join tbl3 in Table3 on tbl1.tabl3ID equals tbl3.ID
            where tbl1.ID == 3 && tbl3.SQID == 20
            select new { field1 = tbl1.field1, field2 = tbl2.field2 
            }).ToList();

实际上,您可以使用表3中的
join tbl3在new{TBLID=tbl1.tabl3ID,SQID=tbl3.SQID}等于new{TBLID=tbl3.ID,SQID=20}
上使用多个条件进行连接。在这种情况下,没有区别。是的,但是,
where
子句和
on
子句之间有区别。当然,我在本例中提到了它。正确,但首先OP询问的是
和内部LINQ join
,其次,您不知道该示例是真实的项目示例,还是为了示例而编写的。