运算符IN和SubQuery的复合键

时间:2018-03-01 19:14:36

标签: c# linq

我有这个内部联接,我正在使用LINQ来进行查询,如何使用LINQ编写此查询,我在网上寻找它但我找不到类似的内容。

 INNER JOIN e210mvp mvp
    ON mvp.codemp IN (1 , 2)
   AND mvp.codlot = dls.codlot
   AND mvp.datmov = (SELECT MIN(min.datmov) 
                       FROM e210mvp min
                      WHERE min.codemp = 1
                        AND min.codlot = mvp.codlot)

谢谢!

1 个答案:

答案 0 :(得分:1)

将等式测试保留在join中,并将非等式测试移至where。请注意,相等测试必须涉及左侧(或涉及它的表达式)等于右侧(或涉及它的表达式)。由于您在子选择测试的两侧都有mvp,因此您无法将其保留在join操作中。

join mvp in e210mvp on dls.codlot equals mvp.codlot
where new[] { 1, 2}.Contains(mvp.codemp) &&
      mvp.datmov == e210mvp.Where(min => min.codemp == 1 && min.codlot == mvp.codlot).Min(min => min.datmov)