SQL Server查询到LINQ查询

时间:2017-04-20 12:40:21

标签: sql linq sql-server-2012

我很难弄清楚如何将此查询转换为LINQ语句。我甚至不知道从哪里开始。

SELECT
  *
FROM
  TestRFRVWL x
WHERE x.TestPALID IN
(SELECT
   a.TestPALID
 FROM
   dbo.GroupID(nolock) a
     INNER JOIN
     dbo.CustomPAl(nolock) b ON
   a.TestPALID = b.TestPALID
 WHERE GroupID LIKE '%A12345%'
);

1 个答案:

答案 0 :(得分:0)

接近文字翻译看起来像:

from x in TestRFRVWL
where (from a in GroupID
       join b in CustomPAl
       on a.TestPALID equals b.TestPALID
       select a.TestPALID).Contains(x.TestPALID)
select x;

鉴于你并没有真正使用联接加入,我可能更喜欢这样的东西:

from x in TestRFRVWL
where dbo.GroupID.Any(a => a.TestPalID == x.TestPalID) &&
      dbo.CustomPAl.Any(b => b.TestPalID == x.TestPalID)
select x;

甚至是方法语法中的东西:

TestRFRVWL.Where(x => dbo.GroupID.Select(a => a.TestPalID).Contains(x.TestPalID) &&
                      dbo.CustomPAl.Select(b => b.TestPalID).Contains(x.TestPalID))

但我不确定哪个会生成最好的SQL。