2013-10-31 69 views
1

我很努力與SQL查詢轉換爲LINQ。SQL到LINQ與許多連接

這裏是SQL:

SELECT dbo.ORGANIZATION.ORGANIZATION_ID, 
     dbo.ORGANIZATION.ORGANIZATION_NAME, 
      dbo.PWR_ORGANIZATION_DIRECTORY.DIRECTORY_IDENTIFIER, 
      dbo.DETAIL_REQUIREMENT.DETAIL_ID, 
     dbo.DETAIL_REQUIREMENT.DETAIL_IDENTIFIER, 
      dbo.PWR_ORGANIZATION_DIRECTORY_MAPPING.DIRECTORY_ATTRIBUTE, 
      dbo.PWR_ORGANIZATION_DIRECTORY_MAPPING.ATTRIBUTE_VALIDATION, 
     dbo.PWR_ORGANIZATION_DIRECTORY_MAPPING.ATTRIBUTE_TRANSFORMATION, 
      dbo.PWR_ORGANIZATION_DIRECTORY_MAPPING.DETAIL_ACCESS 

FROM dbo.ORGANIZATION INNER JOIN 
     dbo.DETAIL_REQUIREMENT ON dbo.ORGANIZATION.ORGANIZATION_ID = dbo.DETAIL_REQUIREMENT.ORGANIZATION_ID INNER JOIN 
     dbo.PWR_ORGANIZATION_DIRECTORY INNER JOIN 
     dbo.PWR_ORGANIZATION_DIRECTORY_MAPPING ON dbo.PWR_ORGANIZATION_DIRECTORY.ORGANIZATION_ID = dbo.PWR_ORGANIZATION_DIRECTORY_MAPPING.ORGANIZATION_ID AND 
     dbo.PWR_ORGANIZATION_DIRECTORY.DIRECTORY_TYPE_ID = dbo.PWR_ORGANIZATION_DIRECTORY_MAPPING.DIRECTORY_TYPE_ID AND 
     dbo.PWR_ORGANIZATION_DIRECTORY.DIRECTORY_ID = dbo.PWR_ORGANIZATION_DIRECTORY_MAPPING.DIRECTORY_ID ON 
     dbo.DETAIL_REQUIREMENT.DETAIL_ID = dbo.PWR_ORGANIZATION_DIRECTORY_MAPPING.DETAIL_ID AND 
     dbo.ORGANIZATION.ORGANIZATION_ID = dbo.PWR_ORGANIZATION_DIRECTORY_MAPPING.ORGANIZATION_ID 

WHERE dbo.ORGANIZATION.ORGANIZATION_ID = 0 AND 
     dbo.PWR_ORGANIZATION_DIRECTORY.DIRECTORY_ID = 1 AND 
      dbo.PWR_ORGANIZATION_DIRECTORY.DIRECTORY_TYPE_ID = 1 

這就是我如何開始的,但是當有兩個弄糊塗了三個表之間連接:

var megaFetch = from org in context.Organizations 
      join detReq in context.DetailRequirements on org.OrganizationId equals detReq.OrganizationId 
      join detMap in context.OrganizationDirectoryMappings on org.OrganizationId equals detMap.OrganizationId && 

有人能指導我在這裏?

謝謝。

回答

2

如果您需要連接多個列中的表,請創建兩側具有相同數量字段的匿名類型。它應該是這樣的;

new {col1 = x.col1, col2 = x.col2, ...} equals new { col1 = y.col1, col2 = y.col2, ...} 
+0

啊哈!就是這樣。 – DoomerDGR8