将具有多个选择的Sql转换为linq

时间:2019-12-12 17:48:43

标签: linq

我正在尝试将mySql数据库中的查询放入我的.net core 2.2系统中的linq,但是由于我对linq不太了解,因此它返回了一些不同的数据,我可以跟踪。

这是查询:

SELECT * 
  from ( select x.data_parecer
              , count(1) qtd
              , sum(case when x.leakage < 0 then 0 else x.leakage end) leakage 
           from ( SELECT trunc(data_parecer) as data_parecer
                       , requisicao
                       , max(valor_inicial_aux)-max(valor_fechado_aux) leakage 
                    FROM analise aa
                   where COALESCE(status_caso,0) > 1 
                     and COALESCE(status_caso,0) != 99 
                     and COALESCE(status_caso,0) != 10
                     and usuario_analise = 'VB5930'
                     and trunc(data_parecer) between trunc(sysdate-1095) and trunc(sysdate)
                   group by requisicao
                          , trunc(data_parecer)
                   --order by data_parecer 
                   order by 2 
                ) x
          group by x.data_parecer
       ) calculo 
 where calculo.qtd > 0

这是我到目前为止所拥有的:

var firstQuery = dbContext.Analyzes
    .Where(
    a =>
    (a.CaseStatus != null ? a.CaseStatus :0 ) != 99 &&
    (a.CaseStatus != null ? a.CaseStatus :0 ) != 10 &&
    (a.CaseStatus != null ? a.CaseStatus : 0) > 1 &&
    a.UserAnalyze.Equals(userlogin) &&
    a.FeedbackDate >= dateFrom &&
    a.FeedbackDate <= dateTo)
    .OrderBy(a => a.FeedbackDate)
    .Select(a => new
    {
        a.FeedbackDate,
        a.Request,                    
        InitialValue = a.InitialValueAux,
        ClosedValue =a.ClosedValueAux
    })
    .GroupBy(a => a.Request)
    .Select(gp => new
    {
        FeedDate = gp.Select(a => Convert.ToDateTime(a.FeedbackDate).Date).ToList()[0],
        Leakage = gp.Max(a => a.InitialValue) - gp.Max(a => a.ClosedValue)

    })
    .GroupBy(a => a.FeedDate).Select(gp => new
    {
        FeedbackDate = gp.Key,
        Quantidade = gp.Count(),
        Leakage = gp.Sum(a => a.Leakage)

    })
    .ToList(); 

结果仍然有些不同,我感觉已经达到了极限。 有人可以帮我吗?

0 个答案:

没有答案