任何人都可以通過將此SQL語句轉換爲Linq來幫助我嗎?組連接多個錶轉換SQL到Linq
SELECT a.KPI, a.ProcessDate, a.Actual, lf.LPLocal, pf.LPProd, d.LocalDelta, d.ProdDelta
FROM
Actual AS a
LEFT OUTER JOIN Local l ON l.Date = a.Date
LEFT OUTER JOIN Prod p ON p.Date = a.Date
LEFT OUTER JOIN Delta d ON d.Date = a.Date
我做了一些研究,並與此想出了:
Dim Xq1 = (From a In tmpActual _
Group Join l In tmpLocal On l.Item("Dates") Equals a.Item("Dates") Into al = Group _
From x In al.DefaultIfEmpty() _
Group Join p In tmpProd On p.Item("Dates") Equals a.Item("Dates") Into ap = Group _
From y In ap.DefaultIfEmpty() _
Group Join d In tmpDelta On d.Item("Dates") Equals a.Item("Dates") Into ad = Group _
From z In ad.DefaultIfEmpty() _
Select
KPI = a.Item("KPI"), ProcessDate = a.Item("Dates"),
AccountingActual = a.Item("AccountingActual"),
LocalForecast = x.Item("LocalForecast"),
ProdForecast = y.Item("ProdForecast"),
Localdelta = z.Item("LocalDelta"),
ProdDelta = z.Item("ProdDelta")).DefaultIfEmpty
但是,當我跑了它,它有:
System.InvalidCastException被抓獲 消息=「無法類型 'd__9e
1[VB$AnonymousType_6
7 [System.Object,System.Object,System.Object,System.Object,System.Object,System.Object,System.Object]]' 類型'Syste m.Data.DataTable」。」用C 在LPBenchmarking.BLL.GetKPIFromPrime(PreKPIData DS,離羣值的Int32)::
源= 「LPBenchmarking」 棧跟蹤\文件 和設置\ RSpalding.TCI \我 文檔\庫\文件\ 2008的Visual Studio \項目\ LPB 優化\ LPBenchmarking_Web \ BusinessComponents \ BLL.vb:行 204的InnerException:
任何幫助,將不勝感激。謝謝。
請注意,您的原始SQL不使用分組方式,並且存在拼寫錯誤:lf。和pf。應該是l。和p。想必。 – 2011-03-11 11:55:54