2009-10-26 97 views
2

我不知道如何將此SQL語句轉換爲使用OUTER APPLY和TOP的LINQ。有人可以提出一個想法如何處理它。謝謝!如何將此SQL語句轉換爲LINQ?

SELECT Cust.CustomerName, Ord.OnlineOrderTitle, Pro.ProductTitle, 
Pic.PictureFilename, PCom.PictureCommentText, Ord.OnlineOrderDateAdded 
FROM Customer as Cust 
OUTER APPLY 
(SELECT * FROM OnlineOrder 
WHERE CustomerID = Cust.CustomerID) as Ord 
OUTER APPLY 
(SELECT * FROM Product 
WHERE OnlineOrderID = Ord.OnlineOrderID) as Pro 
OUTER APPLY 
(SELECT TOP 1 * FROM Accessory 
WHERE ProductID = Pro.ProductID) as Acc 
OUTER APPLY 
(SELECT TOP 1 * FROM Picture 
WHERE ProductID = Pro.ProductID) as Pic 
OUTER APPLY 
(SELECT TOP 1 * FROM PictureComment 
WHERE PictureID = Pic.PictureID) as PCom 
ORDER BY Ord.OnlineOrderDateAdded DESC 
+0

爲什麼不把它作爲一個SQL視圖並以這種方式使用它? 可能不完全是你想要的,但它絕對是一種解決方法。 – Rippo 2009-10-26 07:40:16

+2

這看起來有點像過度設計的'join'。也許你可以在T-SQL中將它重寫爲'join',然後將其轉換爲LINQ-to-SQL? – bzlm 2009-10-26 08:16:34

回答