代码之家  ›  专栏  ›  技术社区  ›  Steve

linq2sql-需要内部联接时发出的交叉联接

  •  3
  • Steve  · 技术社区  · 16 年前

    这会发出内部连接,这正是我想要和工作的:

    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 回复  |  直到 16 年前
        1
  •  6
  •   Jon Skeet    16 年前

    简单地说:如果使用第一个表单,就可以得到内部联接。多个 from 子句表示交叉联接 在LINQ。

    基本上,如果需要内部连接,请使用多个 join 条款。


    (我说是因为后面的序列可以依赖于前面的序列…但对于Linq to SQL,它们几乎总是交叉连接。)