我有一个linq union语句,一直给我一些麻烦,我看不出问题在哪里。任何帮助,将不胜感激。Linq to SQL与多个联盟
错误是...... 使用UNION,INTERSECT或EXCEPT运算符组合的所有查询在目标列表中必须具有相同数量的表达式。
我知道这个错误意味着我在LINQ语句中的一个选择不同量的元素,但我已经广泛地研究这个查询,我一直没能看到,因为这个问题。
(From m In db.mainIncidents _
Join r In db.rcas On r.reliabilityID Equals m.reliabilityID _
Join team In db.rcaInvestigationTeams On team.rcaID Equals r.rcaID _
Join user In db.sysUsers On team.teamMemberID Equals user.sysUserID _
Where m.reliabilityID = reliabilityID _
And team.deleted = False _
Select name = user.firstName & " " & user.lastName & " (" & user.id.ToUpper & ")", _
email = user.id & "@test.com", _
user.phone, _
isSponsor = "No", _
isFacilitator = "No", _
isAssetTeamLead = "No").Union _
(From m In db.mainIncidents _
Join r In db.rcas On r.reliabilityID Equals m.reliabilityID _
Join at In db.sysUsers On r.assetTeamLeadID Equals at.sysUserID _
Where m.reliabilityID = reliabilityID _
Select name = at.firstName & " " & at.lastName & " (" & at.id.ToUpper & ")", _
email = at.id & "@test.com", _
at.phone, _
isSponsor = "No", _
isFacilitator = "No", _
isAssetTeamLead = "Yes").Union _
(From m In db.mainIncidents _
Join r In db.rcas On r.reliabilityID Equals m.reliabilityID _
Join f In db.sysUsers On r.facilitatorID Equals f.sysUserID _
Where m.reliabilityID = reliabilityID _
Select name = f.firstName & " " & f.lastName & " (" & f.id.ToUpper & ")", _
email = f.id & "@test.com", _
f.phone, _
isSponsor = "No", _
isFacilitator = "Yes", _
isAssetTeamLead = "No").Union _
(From m In db.mainIncidents _
Join r In db.rcas On r.reliabilityID Equals m.reliabilityID _
Join s In db.sysUsers On r.sponsorID Equals s.sysUserID _
Where m.reliabilityID = reliabilityID _
Select name = s.firstName & " " & s.lastName & " (" & s.id.ToUpper & ")", _
email = s.id & "@test.com", _
s.phone, _
isSponsor = "No", _
isFacilitator = "No", _
isAssetTeamLead = "No")
我没有看到这个声明有什么问题 - 你是否尝试删除个别的联合声明来试图缩小哪一个导致问题? – davisoa 2010-10-29 02:55:33
是的,我试过一堆不同组合的工会,也删除了选定的元素。我现在在家,无法进入该项目,但明天我会再试一次。谢谢你确认我不是疯了。我花了一个多小时在这个只需要几分钟就能写出的陈述上。我没有想到的另一件事是将这些语句作为单独的查询运行,并将它们汇总到一个数据表中。这也可能带来一些亮点。 – eric 2010-10-29 06:09:03
你试过分配给自己的本地联盟的每个组件(具有类型推断:类型VAR),然后采取联盟在当地人。这将允许您检查每个组件表达式的类型以查看哪个是不同的。 – Richard 2010-10-29 09:51:43