Как преобразовать этот оператор SQL в LINQ? - PullRequest
2 голосов
/ 26 октября 2009

Я понятия не имею, как преобразовать этот оператор SQL в LINQ, который использует OUTER APPLY и TOP. Может кто-нибудь дать представление, как с этим справиться. Спасибо!

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

1 Ответ

1 голос
/ 26 октября 2009

LINQ изначально не поддерживает внешние объединения в стиле SQL (в смысле горизонтального добавления наборов результатов), но вы можете очень легко имитировать их, выполняя групповое объединение и возвращая пустую группу, если соединение не находит результатов. Просмотрите страницы MSDN Как выполнить левое внешнее объединение (Руководство по программированию в C #) и Как объединить данные с LINQ с помощью объединений (Visual Basic) .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...