2015-10-20 47 views
-1

我試圖左多個條件的linqtoentities連接多個表,但我無法讓它在兩個表上運行。錯誤是'連接子句中的一個表達式的類型不正確。'並且代碼:連接子句中的一個表達式的類型不正確。在'GroupJoin'調用中輸入推斷失敗

var listToSend = from row in meetingEmails 
       join s in sentEmail on new {a = (int) row.StaffID, b = (int) row.MeetingID} equals new {a = (int) s.SentToUserID, b = (int) s.CaseID} 

包含在比較類型這四列是不可爲空整型(名稱和類型的聲明是解決這一企圖),所以我努力理解爲什麼它與有麻煩類型。

我可以看到的唯一區別是,右半部分是直接從數據庫中,左側是通過以前的查詢運行,只有某些字段輸出,但我不認爲這會產生影響,因爲數據類型爲連接標準中的字段仍然被編譯器一致地識別(如int)。

儘管發現很多這個錯誤的報告,我無法找到提供我需要爲這個所以任何幫助的洞察力任何職位,將不勝感激

+0

嘗試用int替換int?這將允許空值。 – jdweng

+0

您是否嘗試過在不創建匿名類型的對象的情況下執行此操作?例如'(int)row.StaffID equals(int)s.SentToUserID &&(int)row.MeetingID equals(int)s.CaseID' –

+1

請發佈您的實際查詢。你提到過「GroupJoin」,但這裏沒有任何組加入。這只是一個內部連接(或普通連接)。 –

回答

0

櫃面任何人遇到這個職位,並且具有相同的問題,我設法解決它。

爲了使它工作,我最後添加了select new { row.MeetingID, s.EmailLogID };

我不知道爲什麼沒有完成編寫查詢,卻讓編譯器認爲這是一個數據類型錯誤,而不是通常的'查詢正文必須以select子句或group子句結束',儘管並希望知道爲什麼。

相關問題