[英]need create this query to LINQ
Good night, 晚安,
I am having a great difficulty to convert this query in LINQ, if you can help me 如果你能帮助我,我很难在LINQ中转换这个查询
thank you 谢谢
SELECT DISTINCT STA.ID_OBRA,
STA.ID_AREA,
STA.ID_FLUXO
FROM TB_WF_STATUS_APROVACAO STA
WHERE STA.ID_OBRA NOT IN (
SELECT ID_OBRA
FROM TB_WF_STATUS_APROVACAO STA
WHERE STA.SEQUENCIA = ( SELECT MAX(SEQUENCIA)
FROM TB_WF_STATUS_APROVACAO
WHERE ID_FLUXO = STA.ID_FLUXO)
OR STA.APROVADO <> 1
GROUP BY ID_OBRA)
I am using Entity Framework, and I have tried this: 我正在使用Entity Framework,我试过这个:
var q = (from a in db.pendenteAprovacao.Where(a => !aprovacaoList .SelectMany(b => b.id_obra);
Here's a near-1-to-1 translation (untested): 这是一个接近1对1的翻译(未经测试):
var query =
(from sta1 in db.TB_WF_STATUS_APROVACAO
let subQuery =
from sta2 in db.TB_WF_STATUS_APROVACAO
let maxSequencia =
(from sta3 in db.TB_WF_STATUS_APROVACAO
where sta3.ID_FLUXO == sta2.ID_FLUXO
select sta3.SEQUENCIA).Max()
where sta2.SEQUENCIA == maxSequencia || sta2.APROVADO != 1
group sta2 by sta2.ID_OBRA into g
select g.Key
where !subQuery.Contains(sta1.ID_OBRA)
select new
{
sta1.ID_OBRA,
sta1.ID_AREA,
sta1.ID_FLUXO,
}).Distinct();
reply: 回复:
var q = (from STA in aprovacaoList
where
!
(from STA0 in aprovacaoList
where
STA0.sequencia ==
(from TB_WF_STATUS_APROVACAO in aprovacaoList
where
TB_WF_STATUS_APROVACAO.id_fluxo == STA0.id_fluxo
select new
{
TB_WF_STATUS_APROVACAO.sequencia
}).Max(p => p.sequencia) ||
STA0.aprovado != true
group STA0 by new
{
STA0.id_obra
} into g
select new
{
Id_obra = (Int32?)g.Key.id_obra
}).Contains(new { Id_obra = (Int32?)STA.id_obra })
select new
{
STA.id_obra,
STA.id_area,
STA.id_fluxo
}).Distinct();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.