一尘不染

join子句中表达式之一的类型在Entity Framework中不正确

c#

尝试执行此查询时:

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是类型decimalPAY_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 }

但是得到上面的错误。


阅读 301

收藏
2020-05-19

共1个答案

一尘不染

匿名类型中属性的类型 名称必须匹配:

new { p1 = q.QOT_SEC_ID, p2 = dpr.DPR_TS } 
    equals 
new { p1 = (decimal)p.PAY_SEC_ID, p2 = p.PAY_DATE }

或者如果p.PAY_SEC_IDint?

new { p1 = (int?)q.QOT_SEC_ID, p2 = dpr.DPR_TS } 
    equals 
new { p1 = p.PAY_SEC_ID, p2 = p.PAY_DATE }
2020-05-19