猿问

选择 IN LINQ to entity with internal joins

我有以下 SQL 查询


SELECT ob.PK_OBJETIVO,

ev.NM_EVENTO,

ifi.QT_NOTA_IMPACTO,

imi.QT_NOTA_IMPACTO,

ire.QT_NOTA_IMPACTO,

(ifi.QT_NOTA_IMPACTO + imi.QT_NOTA_IMPACTO + ire.QT_NOTA_IMPACTO)/3 AS 

Media

FROM AVALIACAO_IMPACTO AS ai

INNER JOIN EVENTO AS EV ON ev.PK_EVENTO = ai.FK_AVALIACAO_IMPACTO_EVENTO

INNER JOIN OBJETIVO AS ob ON ob.PK_OBJETIVO = 

ai.FK_AVALIACAO_IMPACTO_OBJETIVO

INNER JOIN IMPACTO_FINANCEIRO AS ifi ON ifi.PK_IMPACTO_FINANCEIRO = 

ai.FK_AVALIACAO_IMPACTO_IMPACTO1

INNER JOIN IMPACTO_MISSAO AS imi ON IMI.PK_IMPACTO_MISSAO = 

AI.FK_AVALIACAO_IMPACTO_IMPACTO2

INNER JOIN IMPACTO_REPUTACAO AS IRE ON IRE.PK_IMPACTO_REPUTACAO = 

AI.FK_AVALIACAO_IMPACTO_IMPACTO3

WHERE ai.FK_AVALIACAO_IMPACTO_OBJETIVO IN

(SELECT OBJ.PK_OBJETIVO

 FROM OBJETIVO AS OBJ

 WHERE OBJ.FK_OBJETIVO_PROCESSO = 3)

我需要在 LINQ 查询中转换该查询,我尝试过:


var queryImpactos = await _context.AvaliacaoImpacto

        .Where(e => _context.Objetivo.Select(o => 

o.ProcessoID).Contains(planoRiscos.Auditoria.ProcessoID))

        .Include(e => e.Evento).Include(e => e.Objetivo)

        .Include(e => e.ImpactoFinanceiro).Include(e => 

e.ImpactoMissao).Include(e => e.ImpactoReputacao).ToListAsync();

" planoRiscos.Auditoria.ProcessoID" 返回它所需要的,纯 SQL 查询的数字 3,但查询结果是返回AVALIACAO_IMPACTO表中的所有记录,但是我只需要表FK_OBJETIVO中AVALIACAO_IMPACTO存在a in的记录OBJETIVO,其中FK_PROCESSOinOBJETIVO等于传递的参数 ( planoRiscos.Auditoria.ProcessoID)。


暮色呼如
浏览 110回答 1
1回答
随时随地看视频慕课网APP
我要回答