Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 需要创建此查询到LINQ_C#_Linq_Entity Framework - Fatal编程技术网

C# 需要创建此查询到LINQ

C# 需要创建此查询到LINQ,c#,linq,entity-framework,C#,Linq,Entity Framework,晚安 如果您能帮助我,我很难在LINQ中转换此查询 多谢各位 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

晚安

如果您能帮助我,我很难在LINQ中转换此查询

多谢各位

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)

这里有一个近似1:1的翻译(未经测试):

答复:

        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();

是的,我正在使用EF,我尝试了这个,more is not bit right var q=(来自db.pendenteAprovacao.Where(a=>!aprovacaoList.SelectMany(b=>b.id_obra)也许这可以帮助您以只读方式使用它(我怀疑是)?从本质上讲,您不希望对结果实体进行更改并将这些更改保留回来?只需考虑将带有此查询的视图添加到数据库,然后映射到新的查询实体是一个不错的选择。
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();
        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();