尝试执行此查询时:var query = from dpr in ctx.DPR_MM join q in ctx.QOT on dpr.DPR_QOT_ID equals qot_id join p in ctx.PAY_MM on new { q.QOT_SEC_ID, dpr.DPR_TS } equals new { p.PAY_SEC_ID, p.PAY_DATE } where q.QOT_ID = qot_id select new { dpr.dpr_ts, dpr.dpr_close, pay.First().pay_dividend };我收到此错误:join子句中的表达式之一的类型不正确。调用“加入”时类型推断失败。QOT_SEC_ID是类型decimal, PAY_SEC_ID也是类型int32。我不允许在表格中更改它。无论我做什么,我都无法在模型的属性中对其进行更改。我试图转换这样的类型:join p in ctx.PAY on new { sec_id = (Int32)(q.QOT_SEC_ID), dpr.DPR_TS } equals new { sec_id = (Int32)p.PAY_SEC_ID, p.PAY_DATE }但是得到上面的错误。
3 回答
呼唤远方
TA贡献1856条经验 获得超11个赞
我猜测其中一列的类型可以隐式转换为另一列。可能的是,int和int?。这就是为什么要equals隐式转换并与new { X = 1 }不兼容的原因new { X = (int?)1 }。
将冲突的列之一强制转换为int或int?取决于是否可以使用null。例如
new { Customer_ID = (int?)pl.Customer_ID, ... }
诚然,在这种特殊情况下,编译器错误尚不清楚,并且未指出根本原因。
(此答案是从已删除的副本中解救出来的。由于它比当前接受的副本更完整,因此我将其添加。)
- 3 回答
- 0 关注
- 597 浏览
添加回答
举报
0/150
提交
取消