如何将此sql查询转换为Linq查询?
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查询。
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 (这意味着不会返回右表中的列,我可以对其进行条件处理)。
发布于 2012-11-20 20:16:47
发布于 2012-11-21 02:37:22
具有非等于条件的联接不是联接,而是不包括内部联接记录的笛卡尔乘积。像您这样进行查询可能有合理的理由,但就记录数量而言,总是存在破坏结果集的风险。
所以让我们假设这些条件确保了一个有意义的结果,然后你可以这样做:
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, ... }https://stackoverflow.com/questions/13469955
复制相似问题