首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linq左外部联接查询

问Linq左外部联接查询
EN

Stack Overflow用户
提问于 2012-11-20 17:18:19
回答 2查看 852关注 0票数 0

如何将此sql查询转换为Linq查询?

代码语言:javascript
复制
select * 
from setupUOMs as su 
LEFT OUTER JOIN scmSKUUoMs as ssu
   on su.UoMID != ssu.UoMID
where ssu.SKUID = 446 and su.UMTypeID = 5

以下是linq查询。

代码语言:javascript
复制
from c in setupUOMs
        join o in scmSKUUoMs
           on c.UOMID equals o.UoMID into sr
        from x in sr.DefaultIfEmpty()
        where x.SKUID == 446 
        select x 

在上面的查询中,到目前为止,我只提取了连接号,但我希望选择左表中不相等的记录,但我能够显示连接的记录。它只返回左表的记录,而我的结果是基于这两列的。在where子句中,我可以访问左表中的x.SKUID,但不能访问右表中的x.UMTypesID (这意味着不会返回右表中的列,我可以对其进行条件处理)。

EN

回答 2

Stack Overflow用户

发布于 2012-11-20 20:16:47

看一下这个左连接LINQTOSQL示例。

http://www.devcurry.com/2011/01/linq-left-join-example-in-c.html

也许这会有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2012-11-21 02:37:22

具有非等于条件的联接不是联接,而是不包括内部联接记录的笛卡尔乘积。像您这样进行查询可能有合理的理由,但就记录数量而言,总是存在破坏结果集的风险。

所以让我们假设这些条件确保了一个有意义的结果,然后你可以这样做:

代码语言:javascript
复制
from su in setupUOMs
from ssu in scmSKUUoMs // from .. from is a Cartesian product
where su.UOMID != ssu.UoMID
                && ssu.SKUID == 446 
                && su.UMTypeID == 5
select new { su.Prop1, ssu.Prop2, ... }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13469955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档