none
como realizar Consultas agrupadas (GROUP BY) usando Linq? RRS feed

  • Pregunta


  • Estoy teniendo dificultad para realizar esta consulta con Linq.
    ¿Como seria el codigo en Linq?

    este código es SQL y si me devuelve lo que quiero. 

    Select C.Nombre, count(F.IdFactura)as Cantidad_Facturas,SUM(F.Subtotal)as SubTotal, Sum(F.Descuento)as Descuentos, SUM(F.IVAtotal) as IVA, SUM(F.Total) as Total
    From
    Facturas as F
    inner join
    Clientes as C
    on f.ClienteId = C.IdCliente
    where F.Fecha >= '01-05-2019' and F.Fecha <= '04-07-2019' and f.Cancelado=0
    group by C.Nombre

    jueves, 4 de julio de 2019 23:31

Todas las respuestas

  • hola

    Podrias ir armandola de a poco usando el join y el group by de linq, o quizas aplicar group join

    Realizar combinaciones agrupadas

    var result = from c in dbcontext.Clientes
                       join  f in dbcontext.Facturas.Where(x=> x.Fecha <= fechaDesde 
                                                  && x.Fecha <= fechaHasta 
                                                  && x.Cancelado == 0) on f.ClienteId equals c.IdCliente into facturaCli
                      select new {
                           Nombre = c.Nombre,
                           CantidadFacturas = facturasCli.Count,
                           SubTotal = facturaCli.Sum(x=> x.SubTotal),
                           //resto
                      };

    importante como el join usa el into para llevar las coincidencias y poder aplicar sobre este las operaciones de sum y count

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 5 de julio de 2019 3:07
  • Debido a que no hemos recibido alguna notificación que aún se esté presentando el problema que enuncia en vuestra consulta y que la respuesta provista provee un amplio panorama y campo de acción sobre tu duda; nos gustaría considerar la misma como resuelta debido a la respuesta apropiada proporcionada  y así proceder a calificar la misma como respuesta.

    No dudes en ampliar más sobre este tema si es que aún lo requirieras o de abrir una nueva consulta en caso de tener alguna situación o necesitarla con algún otro de los productos de Microsoft.

     

    Adicional le invito a consultar los siguientes recursos:

    Guía para formular preguntas en el foro

    Channel 9 - donde puedes encontrar una sección de: Desarrollo utilizando Visual Studio

     

    Gracias por usar los foros de MSDN.

    Erick Rivera

     ____

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

     

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

     

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft. 

    viernes, 12 de julio de 2019 18:46