我已经遇到了与我的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