LINQ2SQL - 当我想要内连接时发出的交叉连接

时间:2009-09-01 16:38:28

标签: linq linq-to-sql sql-server-2008

这会发出内部联接,这就是我想要和的作用:

var q =
    from itm in esdc.items
    join itmImg in esdc.itemImages on itm.itemId equals itmImg.itemId
    join itmIdent in esdc.itemIdentities on itm.imgIdentityId equals itmIdent.itemIdentityId
    join startImgs in esdc.vStartPgImgs on itmImg.imgId equals startImgs.imgId
    select ...

这也有效,但发出了交叉连接。我如何获得内部联接?我仔细检查了实体,关系是正确的。

var q =
    from itmIdent in esdc.itemIdentities
    from itm in itmIdent.items
    from itmImg in itm.itemImages
    join startImgs in esdc.vStartPgImgs 
        on itmImg.imgId equals startImgs.imgId
    select ...

如果您需要我发布已发布的SQL和实体设置,请告诉我。

1 个答案:

答案 0 :(得分:6)

简单地说:如果使用第一个表单,则会获得内部联接。多个from子句表示LINQ中的交叉连接(无论如何, 1 )。

基本上,如果您想要内部联接,请使用多个join子句。


1 (我说有点因为后续的序列可能依赖于早期的序列......但对于LINQ to SQL,它们几乎总是交叉连接。)