這個問題在這里已經有了答案: 物體框架中 join 子句中的一個運算式的型別不正確 (4 個回答) 15 小時前關閉。
如果這個問題已經被問到,那么請把我定向到 SO 鏈接,這樣我就可以避免被騙。但我找不到任何直接回答問題的內容。
我有以下場景
var result = (from a in table1
join b in table2
on a.column equals b.column
join c in table3
on b.column equals c.column
join d in table4
on new { a.column2, c.column2 }
equals { d.column3, d.column6 }
select a);
問題是 table3 的 column2 和 table4 的 column6 都是 int 型別,但 1 可以為空,另一個不是,這導致“連接子句中的一個運算式的型別不正確”
我理解錯誤但我的問題;有沒有辦法解決?或者我只是在嘗試使用 linq 達到我需要的結果時陷入死胡同?
我試圖通過使用可為空型別的 Value 屬性使連接作業,但這不起作用。如果沒有其他資源可以使用 linq 實作這一點,那么我將不得不將所有代碼移動到 SPROC 中的 SQL,而我不想這樣做。
我注意到我可以在匿名宣告之外執行連接并且 linq 沒有問題;但我需要一個復合連接。
謝謝
uj5u.com熱心網友回復:
您需要在匿名型別標簽中給出屬性,并且標簽必須相同。然后,您可以將 non-nullableint轉換為 nullable int。
var result = (from a in table1
join b in table2
on a.column equals b.column
join c in table3
on b.column equals c.column
join d in table4
on new { JoinColumn1 = a.column2, JoinColumn2 = (int?)c.column2 }
equals { JoinColumn1 = d.column3, JoinColumn2 = d.column6 }
select a);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/390894.html
