【问题标题】:C# Linq Joining with AND conditions [duplicate]C# Linq 使用 AND 条件连接 [重复]
【发布时间】:2018-06-01 10:55:47
【问题描述】:

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

所以我的 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 时使用 AND?请问有什么建议吗?

【问题讨论】:

    标签: c# sql linq linq-to-sql ssms


    【解决方案1】:

    只需添加额外的 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();
    

    【讨论】:

    • 您实际上可以使用join tbl3 in Table3 on new { TBLID = tbl1.tabl3ID, SQID = tbl3.SQID } equals new { TBLID = tbl3.ID, SQID = 20 }加入多个条件
    • 这种情况没有区别。
    • 在这种情况下 - 是的,没有区别,但是where 子句和on 子句之间存在区别。
    • 当然,我在这个案例中提到过。
    • 正确,但首先 OP 是在询问 AND inside LINQ join,其次您不知道该示例是一个真实的项目示例,还是为了示例而编写的。
    猜你喜欢
    • 2016-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多