0
我知道有很多關於此的問題。我已經閱讀了它們,並且爲匿名類型屬性創建了相同的名稱和類型。我仍然在標題中看到錯誤。舊的「聯接子句中的一個表達式的類型不正確」
代碼是:
var v = (from o in dataContext.pp_orders.Where(p => p.ID > lastOrderID).OrderBy(p => p.DueDate)
join part in dataContext.pp_parts on o.ProductID equals part.ProductID
join op in dataContext.pp_operations on new { ID2 = part.ID } equals new { ID2 = (int)op.PartID }
select (x => new JobModel { o = o, op = op }));
的錯誤是在第二次加入。
[更新]
看來加盟平等是正確的。此查詢有效(無錯誤):
var v = (from o in dataContext.pp_orders.Where(p => p.ID > lastOrderID).OrderBy(p => p.DueDate)
join part in dataContext.pp_parts on o.ProductID equals part.ProductID
join op in dataContext.pp_operations on part.ID equals (int)op.PartID
select op);
問題出在select子句。我不明白爲什麼它會在該select子句的標題中給出錯誤。
select (x => new JobModel { o = o, op = op })
你就不能使用'加入dataContext.pp_operations運算的一部分。 ID等於(int)op.PartID'? –
如果我使用,我得到相同的錯誤,我明白,因爲成員ID和PartID不具有相同的名稱。但我不明白爲什麼我得到明確的成員分配錯誤新{ID2 = ...} –
你是100%確定'part.ID'是一個'int'而不是可空?順便說一句,join子句中的屬性不必具有相同的名稱,所以'part.ID equals(int)op.PartID'應該可以工作。事實上,你將它們投影到一個匿名類型意味着_type_必須具有相同的屬性名稱,他們這樣做。這是問題的_type_,而不是屬性名稱。 –