none
Ayuda con consulta Linq y un group by RRS feed

  • Pregunta

  • Hola a todos,

    Tengo esta consulta:

                var entradatraspaso = from a in stBR.LOJA_ENTRADAS_PRODUTO
                                      join b in stBR.LOJA_ENTRADAS on new { a.FILIAL, a.ROMANEIO_PRODUTO } equals new { b.FILIAL, b.ROMANEIO_PRODUTO }
                                      join c in stBR.PRODUTOS_BARRA on a.PRODUTO equals c.PRODUTO into left
                                      from bc in left.DefaultIfEmpty()
                                      where b.EMISSAO > fchep

    Y necesito hacer un group by por los campos de: b.EMISSAO, a.FILIAL, bc.CODIGO_BARRA, b.TIPO_ENTRADA_SAIDA  Y no sé como hacerlo.

    La consulta que estoy transformando es:

    select
    a.EN1as CANTIDAD,
    b.emissao as FECHA,
    a.FILIAL,
    b.TIPO_ENTRADA_SAIDA as TIPOMOVIMIENTO,
    'Traspaso Salida' as TIPOMOVIMIENTODESC,
    c.CODIGO_BARRA as CLAVE_ARTICULO  
    from loja_saidas_produto a
           inner join loja_saidas b on a.FILIAL =b.FILIAL and a.ROMANEIO_PRODUTO = b.ROMANEIO_PRODUTO
           left join produtos_barra c on a.PRODUTO = c.Produto
    where b.emissao <= '20121211'
    group by
    b.emissao,
    a.FILIAL,
    c.CODIGO_BARRA,
    b.TIPO_ENTRADA_SAIDA

    Muchas gracias a todos.

    lunes, 17 de diciembre de 2012 9:37

Respuestas

  • Bueno, después de mucho investigar y hacer muchas "prueba / error" lo he sacado.

    La solución es esta:

                    var entradatraspaso = from a in stBR.LOJA_ENTRADAS_PRODUTO
                                           join b in stBR.LOJA_ENTRADAS on new { a.FILIAL, a.ROMANEIO_PRODUTO } equals new { b.FILIAL, b.ROMANEIO_PRODUTO }
                                           join c in stBR.PRODUTOS_BARRA on a.PRODUTO equals c.PRODUTO into left
                                           from bc in left.DefaultIfEmpty()
                                           where b.EMISSAO > fchep
                                           group new { a, b, bc } by new { b.EMISSAO, a.FILIAL, bc.CODIGO_BARRA, b.TIPO_ENTRADA_SAIDA } into grupo

                                           select new ClassStock
                                           {
                                               Date = grupo.Key.EMISSAO,
                                               StoreID = grupo.Key.FILIAL,
                                               EANnumber = grupo.Key.CODIGO_BARRA,
                                               Qty = grupo.Sum(a => a.a.EN1),
                                               //Value = "",
                                               Type = "Entry Transfer",
                                               TypeID = grupo.Key.TIPO_ENTRADA_SAIDA,
                                           };

    El truco está en "crear" el grupo con la línea: group new { a, b, bc } by new { b.EMISSAO, a.FILIAL, bc.CODIGO_BARRA, b.TIPO_ENTRADA_SAIDA } into grupo

    Espero que le sirva a alguien.

    Saludos.

    jueves, 20 de diciembre de 2012 16:29