2011-10-21 120 views
1

我如何轉換這下面的代碼從SQL到LINQ我怎樣才能把這段代碼轉換,從SQL到LINQ

SELECT CF.CustomerProfileId,CF.Salutation,CF.Gender,CF.LastName, 
      CF.DateOfBirth,AD.Line1,AD.Line2,AD.Line3,AD.Line4,AD.Line5, 
      AD.Country,AD.ElectronicAddressDesc,NCIType.NationalCustomerIdentifierTypeDesc, 
      NCI.NationalCustomerIdentifier from CustomerProfile CF 
      left join Address AD on CF.CustomerProfileId = CF.CustomerProfileId 
      left join NationalCustomerIdentifiers NCI on CF.CustomerProfileId = NCI.CustomerProfileId 
      left join NationalCustomerIdentifierType NCIType on NCI.NationalCustomerIdentifierTypeId = NCIType.NationalCustomerIdentifierTypeId 
      where CF.CustomerProfileId = @CustomerProfileid and CF.Version = @Version 
+1

如果它在哪裏,我會從該查詢創建一個視圖,並在您的代碼中導入該視圖。 – Frederiek

+0

提示。嘗試將其分解爲多個邏輯LINQ查詢,然後使用防禦執行將它們加入,這與將C#/ VB代碼重構爲可管理塊的方式相同。提示2:對左連接使用DefaultIfEmpty或參見提示3.提示3:使用對象之間的自然關聯來完全避免連接。 –

+0

看來DefaultIfEmpty不適用於Linq到實體。花了很多時間尋找左外連接後,我終於決定使用VIEW。 – user995099

回答

0

你需要做出幾個左邊LINQ連接。雖然看起來不是很好,但這是可能的(linq在處理除內部之外的連接時不太舒服)。 Here is a microsoft example of left join in linq它只加入兩個表格,但可以擴展它。如果你不喜歡結果的外觀 - 比製作一個視圖或存檔。