【发布时间】:2013-05-25 00:30:09
【问题描述】:
我有一个带有 3 个连接的 LINQ 查询和一个引发空引用错误的分组操作。在下面的查询(我很抱歉长度)中,如果您跳到“eDTK_PDP_Description”字段,那就是导致问题的那个。我意识到我有最后一个连接的 DefaultIfEmpty 规范,但我想如果我为该连接中的字段分配一个值,如果它是 null 应该可以解决问题。我在这里做错了什么?谢谢!
Dim UpdateSiebelPDP1 = From j In ( _
From PDP In SiebelMultPDPDescNoNull _
Group Join Siebel In ProdBase _
On PDP.Siebel_PDP_Code Equals Siebel.Siebel_PDP_Code _
Into g = Group _
From Result In g _
Group Join EDTK In eDTKBase _
On PDP.Siebel_PDP_Code Equals EDTK.eDTK_PDP_Code _
Into h = Group _
From Result2 In h _
Group Join EDTK2 In EDTKPDPOneDescDet _
On PDP.Siebel_PDP_Code Equals EDTK2.PDP_Description _
Into i = Group _
From Result3 In i.DefaultIfEmpty _
Select Result.Siebel_PLI, _
Result.Siebel_PDP_Code, _
Update_DAD_Flag = If(Result.Siebel_DAD_Flag Is Nothing, "Yes", "No"), _
System = "Siebel", _
PDD_PDP_Description = If(Result2.PDD_PDP_Description Is Nothing, _
"", Result2.PDD_PDP_Description), _
Siebel_PDP_Description = "Multiple", _
eDTK_PDP_Description = If(Result3.PDP_Description Is Nothing, _
"Multiple", Result3.PDP_Description)) _
Group j By j.Siebel_PLI, _
j.Siebel_PDP_Code, _
j.Update_DAD_Flag, _
j.System, _
j.PDD_PDP_Description, _
j.Siebel_PDP_Description, _
j.eDTK_PDP_Description _
Into k = Group _
Select New With { _
Siebel_PLI, _
Siebel_PDP_Code, _
Update_DAD_Flag, _
System, _
PDD_PDP_Description, _
Siebel_PDP_Description, _
eDTK_PDP_Description}
【问题讨论】:
-
跑题了,但是... Barf VB 甚至让性感的 LINQ 看起来很糟糕。
-
显然你的一个对象是空的。我会将您的查询视为 SQL 语句并开始删除部分,直到您确定导致问题的联接,然后从那里挖掘。