我已經遇到了與我的Linq-to-sql有關的問題。將嵌套連接的高級SQL查詢轉換爲Linq-to-sql
我有一個SQL查詢,運行我想要的方式,通常我使用Linqer轉換爲Linq來查看一般想法。但是這次我的SQL查詢似乎爲Linqer提前了。 :/
我認爲問題是嵌套在左外聯接中的內聯接。不幸的是,我從來沒有遇到過這種情況,也不知道如何使用Linq來解決這個問題。
我的SQL查詢看起來是這樣的:
SELECT c.[Company], c.[Name_First], c.[Name_Last], ort.[IDOriginatorRoleType],
ort.[RoleType] AS [OriginatorRoleType], o.[IDOriginator], o.[IDWork],
o.[IDContact], m.[IDMedia], m.[IDWork], m.[FileName], m.[FileNameOnDisk],
m.[DateAdded], w.[IDWork] AS [IDWork2], w.[ArticleNumber], w.[Title],
w.[FrontPageLow], w.[FrontPageLowOnDisk], w.[FrontPageHigh],
w.[FrontPageHighOnDisk]
FROM [dbo].[tblSubscriptionsWorks] AS sw
INNER JOIN [dbo].[tblWorks] AS w ON sw.[IDWork] = w.[IDWork]
LEFT OUTER JOIN [dbo].[tblMedias] AS m ON m.[IDWork] = w.[IDWork]
LEFT OUTER JOIN ([dbo].[tblOriginators] AS o
INNER JOIN [dbo].[tblOriginatorRoles] AS ors ON
o.[IDOriginatorRole] = ors.[IDOriginatorRole]
INNER JOIN [dbo].[tblOriginatorRoleTypes] AS ort ON
ors.[IDOriginatorRoleType] = ort.[IDOriginatorRoleType]
INNER JOIN [dbo].[tblContacts] AS c ON
o.[IDContact] = c.[IDContact]) ON
(o.[IDWork] = w.[IDWork]) AND (ort.[IDOriginatorRoleType] = 1)
WHERE sw.[IDWork_Subscription] = 9942
我會認爲這些連接是'鏈接'而不是'嵌套'。 – onedaywhen 2012-01-17 10:24:50
你有沒有看過使用LinqPad,它可能是非常有用的 – Kane 2012-01-17 10:26:18