如何在Linq2SQL的Join语句中添加AND连接条件?
在Linq to SQL的JOIN中添加AND条件的方法
嗨,我来帮你搞定这个多条件JOIN的问题~
首先看你在SSMS里的SQL,和TABLE3的JOIN包含两个关联条件:
TBL1.TBL3ID = TBL3.ID AND TBL3.SQID = 20
在Linq to SQL里,没法像SQL那样直接在on后面加AND,不过我们可以用匿名类型把多个条件打包起来,让JOIN两边的匹配项完全对应。另外提醒你一下,你原来的Linq代码里有个小语法错误:where tbl1.ID = 3应该用等于运算符==,而不是赋值的=,这个要修正避免运行报错哦。
修正后的完整代码如下:
var linq = (from tbl1 in Table1 join tbl2 in Table2 on tbl1.tabl2ID equals tbl2.ID // 用匿名类型封装两个JOIN条件,两边属性名和类型要一致 join tbl3 in Table3 on new { tbl1.tabl3ID, SQID = 20 } equals new { tbl3.ID, tbl3.SQID } where tbl1.ID == 3 select new { field1 = tbl1.field1, field2 = tbl2.field2 }).ToList();
简单解释下原理
Linq会把匿名类型的每一个属性都作为JOIN的匹配条件,只要两边匿名类型的属性名称、数据类型完全对应,就会被转换为SQL里的AND关联条件,最终生成的SQL和你在SSMS里写的效果完全一致。
内容的提问来源于stack exchange,提问作者KJSR
相关产品推荐
相关产品推荐

