Может ли кто-нибудь помочь мне, переведя этот оператор 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]]'
набрать 'System.Data.DataTable'. "
Source = "LPBenchmarking" StackTrace:
на LPBenchmarking.BLL.GetKPIFromPrime (PreKPIData
ds, выбросы Int32) в C: \ Documents
и настройки \ RSpalding.TCI \ My
Документы \ Библиотеки \ Documents \ Визуальное
Studio 2008 \ Проекты \ ЛПБ
Оптимизация \ LPBenchmarking_Web \ BusinessComponents \ BLL.vb: линия
204 InnerException:
Любая помощь будет оценена. Благодарю.