none
Conversão conulta SQL Server para Linq RRS feed

  • Pergunta

  • Galera, estou com um pequeno problema. Tenho uma consulta no SQL Server que está certa, mas quando escrevo ela no linq está ocorrendo erro. A coluna ID_QTDE_HOMENS deveria retornar 0, mas está retornando 1.

    SELECT e.ID_EQUIPE, COUNT(C.ID_COLABORADOR) ID_QTDE_HOMENS, e.NOME, e.ID_CLASSE
    from EQUIPE e
        LEFT JOIN COLABORADOR c ON e.ID_EQUIPE = c.ID_EQUIPE
        
    WHERE NOT EXISTS(SELECT p.ID_EQUIPE
                     FROM PLANEJAMENTO_PSR p
                        INNER JOIN EQUIPE q ON p.ID_EQUIPE = q.ID_EQUIPE
                     WHERE p.ID_PSR= 14 AND p.DATA = '2013-03-28'
                       AND e.ID_EQUIPE = q.ID_EQUIPE)     
      AND e.ID_PSR = 14              

    GROUP BY e.ID_EQUIPE, e.NOME, e.ID_CLASSE

    E aqui abaixo está a minha consulta escrita em linq:

    var query1 = (from e in dbContext.EQUIPE
                             from colaboradorEquipe in e.COLABORADOR.DefaultIfEmpty()
                             where !dbContext.PLANEJAMENTO_PSR.Any(p => p.ID_EQUIPE == e.ID_EQUIPE && (p.DATA == Data && p.ID_PSR == psrID))
                                 && e.ID_PSR == psrID
                             group colaboradorEquipe by new { ID_EQUIPE = e.ID_EQUIPE, NOME = e.NOME, ID_CLASSE = e.ID_CLASSE } into g
                             select new
                             {
                                 ID_EQUIPE = g.Key.ID_EQUIPE,
                                 ID_QTDE_HOMENS = g.Count(),
                                 NOME = g.Key.NOME,
                                 ID_CLASSE = g.Key.ID_CLASSE,
                                
                             }).ToList();

    quinta-feira, 28 de março de 2013 15:04

Todas as Respostas

  • Cara,

    Na sua query do SQL vejo que utiliza Left Join, Inner Join e no linq só vi a parte do left join que você acaba optando pelo DefaultIfEmpty(), porém não estou vendo a parte do inner join. Pode ser que o retorno esteja diferente por causa disso.

    http://msmvps.com/blogs/andreysanches/archive/2009/09/24/s-233-rie-linq-to-sql-parte-5-criando-querys-com-join-entre-tabelas.aspx

    http://stackoverflow.com/questions/37324/what-is-the-syntax-for-an-inner-join-in-linq-to-sql

    Qualquer dúvida tente utilizar um conversor:

    http://www.sqltolinq.com/


    Atenciosamente, Samuel dos Anjos

    sexta-feira, 29 de março de 2013 00:02