首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >选择inner到具有内部联接的实体

选择inner到具有内部联接的实体
EN

Stack Overflow用户
提问于 2018-05-10 17:53:12
回答 1查看 39关注 0票数 0

我有以下SQL查询

代码语言:javascript
复制
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查询中转换该查询,我尝试过:

代码语言:javascript
复制
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表中的所有记录,但是我只需要在AVALIACAO_IMPACTO中的FK_OBJETIVO存在于OBJETIVO表中的记录,其中OBJETIVO中的FK_PROCESSO等于传递的参数(planoRiscos.Auditoria.ProcessoID)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-11 10:13:22

提示:每当需要将SQL查询转换为LINQ查询时,将查询语法作为首选。

试试这个:

代码语言:javascript
复制
var queryImpactos = from ai in AVALIACAO_IMPACTO
                     join
ev in EVENTO on ai.FK_AVALIACAO_IMPACTO_EVENTO equals ev.PK_EVENTO
                     join ob in OBJETIVO on ai.FK_AVALIACAO_IMPACTO_OBJETIVO equals ob.PK_OBJETIVO
                     join ifi in IMPACTO_FINANCEIRO on ai.FK_AVALIACAO_IMPACTO_IMPACTO1 equals ifi.PK_IMPACTO_FINANCEIRO
                     join imi in IMPACTO_MISSAO on ai.FK_AVALIACAO_IMPACTO_IMPACTO2 equals imi.PK_IMPACTO_MISSAO
                     join IRE in IMPACTO_REPUTACAO on ai.FK_AVALIACAO_IMPACTO_IMPACTO3 equals IRE.PK_IMPACTO_REPUTACAO
                     where (from obj in OBJETIVO where obj.FK_OBJETIVO_PROCESSO == 3 select obj.PK_OBJETIVO).Contains(ai.FK_AVALIACAO_IMPACTO_OBJETIVO)
                     select new
                     {
                         ob.PK_OBJETIVO,
                         ev.NM_EVENTO,
                         QT_NOTA_IMPACTO1 = ifi.QT_NOTA_IMPACTO,
                         QT_NOTA_IMPACTO2 = imi.QT_NOTA_IMPACTO,
                         QT_NOTA_IMPACTO3 = IRE.QT_NOTA_IMPACTO,
                         Media = (ifi.QT_NOTA_IMPACTO + imi.QT_NOTA_IMPACTO + IRE.QT_NOTA_IMPACTO) / 3
                     };

希望这就是你要找的!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50278759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档