我有一個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