2009-10-26 9 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보기로 만들고 그런 식으로 사용합니까? Maybve 당신이 원하는 것은 아니지만 확실히 한 가지 해결 방법입니다. – Rippo

+2

이것은 과도하게 설계된'join'처럼 보입니다. 아마도 T-SQL의 '조인'으로 다시 작성한 다음이를 LINQ-to-SQL로 변환 할 수 있습니까? – bzlm

답변

1

LINQ는 SQL 스타일 외부 (결과 집합의 수평 가산의 의미에서) 기본적으로 조인을 지원하지 않습니다,하지만 당신은 가입 그룹화 수행하고 발견에는 가입하지 않는 경우 빈 그룹을 반환하여 그들을 아주 쉽게 시뮬레이션 할 수 있습니다 결과. MSDN 페이지 How to: Perform Left Outer Joins (C# Programming Guide)How to: Combine Data with LINQ by Using Joins (Visual Basic)을보십시오.

+0

링크를 제공해 주셔서 감사합니다. 매우 도움이됩니다. –

관련 문제