none
Sumar el valor de las entidades de una lista generica de una entidad que implementa otra entidad simple.

    Pregunta

  • Hola:

    Tengo estas dos entidades:

     public class ETicket
        {
            public int NumTicket { get; set; }
            public int Sku { get; set; }
            public string Upc { get; set; }
            public string Descripcion { get; set; }
            public int ClavePrecio { get; set; }
            public decimal PrecioVenta { get; set; }
            public decimal PiezasVendidas { get; set; }
            public decimal Importe { get; set; }
            public DateTime FechaVenta { get; set; }
            public string Unidad { get; set; }
            public string TipoImpuesto { get; set; }
            public decimal TasaImpuesto { get; set; }
            public ETipoImpuesto Impuesto { get; set; }
        }
    
        public class ETipoImpuesto
        {
            public decimal Excento { get; set; }
            public decimal Iva { get; set; }
            public decimal Ivaf { get; set; }
            public decimal Iepscc { get; set; }
            public decimal Ieps { get; set; }
            public decimal Total { get; set; }
    
            public void Sumar()
            {
                Total = Iva + Ivaf + Iepscc + Ieps;
            }
        }

      Tengo  una lista genérica del tipo Eticket, y necesito obtener la sumatoria de cada uno de los impuestos que lleva el articulo:

    Un articulo puede tener mas de un impuesto pero, necesito sacar un sumarizado de cada uno de los impuestos de toda la lista, el tipo de impuesto y la tasa de impuesto y acumularlo en un Array. Se que Linq me sacara del apuro pero no tengo claro como seria la consulta.

    Gracias


    Saludos desde Monterrey, Nuevo León, México!!!


    viernes, 21 de febrero de 2014 2:57

Respuestas

  • sigo pensando que definir una entidad con propiedades para cada impuesto fue incorrecto, pero bueno quizas podrias hacer algo como

    var result = from item in salesDetails.Select(x=>x.Impuestos)
                    select new {
                          Ieps = item.Sum(x=>x.Ieps),
                          Iva = item.Sum(x=>x.Iva)
                     };


    y podrias poner los otros impuestos

    alli dehe una clase anonima, peor podrias crear una instancia de Impuesto, como ser

    ETipoImpuesto result = (from item in salesDetails.Select(x=>x.Impuestos)
                           select new ETipoImpuesto {
                              Ieps = item.Sum(x=>x.Ieps),
                              Iva = item.Sum(x=>x.Iva)
                          }).FirstOrDefault();

    porque por lo que veo no hay ningun array al acumular solo es un item que se va a generar con los acumulados de todos los impuestos

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    viernes, 21 de febrero de 2014 11:30

Todas las respuestas

  • sigo pensando que definir una entidad con propiedades para cada impuesto fue incorrecto, pero bueno quizas podrias hacer algo como

    var result = from item in salesDetails.Select(x=>x.Impuestos)
                    select new {
                          Ieps = item.Sum(x=>x.Ieps),
                          Iva = item.Sum(x=>x.Iva)
                     };


    y podrias poner los otros impuestos

    alli dehe una clase anonima, peor podrias crear una instancia de Impuesto, como ser

    ETipoImpuesto result = (from item in salesDetails.Select(x=>x.Impuestos)
                           select new ETipoImpuesto {
                              Ieps = item.Sum(x=>x.Ieps),
                              Iva = item.Sum(x=>x.Iva)
                          }).FirstOrDefault();

    porque por lo que veo no hay ningun array al acumular solo es un item que se va a generar con los acumulados de todos los impuestos

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    viernes, 21 de febrero de 2014 11:30
  • Hola Luis,

    Gracias por consultar en el foro. Déjanos saber tus comentarios de la última respuesta de Leandro. Esperamos tus comentarios.

    Saludos,

    Miguel

    MSDN/TechNet Soporte Comunidades

    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, 21 de febrero de 2014 22:31
    Moderador
  • Hola Leandro:

    Lo que me sugieres me agrada solo que me queda alguna duda, ¿como tomaría el valor de TasaImpuesto y TipoImpuesto que pertenece a la clase Eticket la cual contieme ETipoImpuesto?, lo que comentaba del Array efectivamente así sera, el resultado de esta consulta Linq se ira enviando aun método que recibe un Array como parámetros, pero para eso no tengro problemas.

    Gracias por tu tiempo y conocimientos.


    Saludos desde Monterrey, Nuevo León, México!!!

    viernes, 21 de febrero de 2014 22:41
  • Hola Leandro:

     Tengo problemas para implementar el fragmento de codigo que me proporcionas :

    Con el segundo:


    Saludos desde Monterrey, Nuevo León, México!!!

    sábado, 22 de febrero de 2014 2:50