2017-04-20 190 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。