2017-04-20 187 views
-2

我很难搞清楚如何将此查询转换为LINQ语句。我甚至不知道从哪里开始。SQL Server查询到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%' 
); 
+2

尝试阅读LINQ。 https://msdn.microsoft.com/en-us/library/mt693024.aspx – Neil

+0

试试这个为您的查询,这将使您的LINQ语句更容易:'SELECT x。* FROM dbo.GroupID(nolock)a INNER JOIN dbo.CustomPAl(NOLOCK)b关于 a.TestPALID = b.TestPALID INNER JOIN TestRFRVWL x开 x.TestPALID = a.TestPALID WHERE的GroupID LIKE '%A12345%';' – SQLMason

+2

后您已用@ Neil的建议了解了LINQ,看看这里的问题[像这样](http://stackoverflow.com/questions/17841108/linq-select-within-a-select)来处理类似的问题。 –

回答

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。