none
Obtener los 18 maximos valores de una lista RRS feed

  • Pregunta

  • hola como va ? tengo una lista donde cargo valores asi

     var lstModel = new List<SimpleReportViewModel>();
                foreach (var d in data)
                {
                    lstModel.Add(new SimpleReportViewModel
                    {
                        Partido = d.IdGrupo,
                        Cantidad = d.SumaCantidad,
                        EscañoC1 = Convert.ToDecimal(d.SumaCantidad / 1),
                        EscañoC2 = Convert.ToDecimal(d.SumaCantidad / 2),
                        EscañoC3 = Convert.ToDecimal(d.SumaCantidad / 3),
                        EscañoC4 = Convert.ToDecimal(d.SumaCantidad / 4),
                        EscañoC5 = Convert.ToDecimal(d.SumaCantidad / 5),
                        EscañoC6 = Convert.ToDecimal(d.SumaCantidad / 6),
                        EscañoC7 = Convert.ToDecimal(d.SumaCantidad / 7),
                        EscañoC8 = Convert.ToDecimal(d.SumaCantidad / 8),
                        EscañoC9 = Convert.ToDecimal(d.SumaCantidad / 9),
                        EscañoC10 = Convert.ToDecimal(d.SumaCantidad / 10),
                        EscañoC11 = Convert.ToDecimal(d.SumaCantidad / 11),
                        EscañoC12 = Convert.ToDecimal(d.SumaCantidad / 12),
                        EscañoC13 = Convert.ToDecimal(d.SumaCantidad / 13),
                        EscañoC14 = Convert.ToDecimal(d.SumaCantidad / 14),
                        EscañoC15 = Convert.ToDecimal(d.SumaCantidad / 15),
                        EscañoC16 = Convert.ToDecimal(d.SumaCantidad / 16),
                        EscañoC17 = Convert.ToDecimal(d.SumaCantidad / 17),
                        EscañoC18 = Convert.ToDecimal(d.SumaCantidad / 18)
                    });
    Ahora luego de obtener esos valores que va row por row como obtengo del total los 18 valores mas altos. Desde ya gracias

    miércoles, 5 de junio de 2019 15:11

Respuestas

  • Buenas, solucione de esta manera porque no se otra forma cualquier aporte bienvenido sea.Luego de obtener el primer listado agrupe todo en un campo "Obtenido"

    var lstModel2 = new List<SimpleReportViewModel>();
                foreach (var d2 in lstModel)
                {
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC1
    
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC2
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC3
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC4
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC5
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC6
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC7
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC8
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC9
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC10
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC11
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC12
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC13
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC14
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC15
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC16
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC17
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC18
                    });
                }

    Luego lo ordene para sacar los maximos

     var pru = lstModel2.OrderByDescending(c1 => c1.Obtenido);

    y lo pase a otra lista mas pero restringiendo solo a 18

    var lstModel3 = new List<SimpleReportViewModel>();
                foreach (var d3 in pru.Take(18))
                {
                    lstModel3.Add(new SimpleReportViewModel
                    {
                        Partido = d3.Partido,
                        Obtenido = d3.Obtenido
                    });
                }
    y asi obtengo los 18 maximos valores

    • Marcado como respuesta EnzoTuc40 jueves, 6 de junio de 2019 0:26
    jueves, 6 de junio de 2019 0:25

Todas las respuestas

  • Que tal amigo, puedes hacer lo siguiente

    var maximo = lstModel.Max(m=>m.propiedad).First() ;

    Bader Molinas 

    Paraguay

    • Propuesto como respuesta Carlos_Ruiz_M miércoles, 5 de junio de 2019 16:42
    miércoles, 5 de junio de 2019 15:16
  • Que tal amigo, puedes hacer lo siguiente

    var maximo = lstModel.Max(m=>m.propiedad).First() ;

    Bader Molinas 

    Paraguay

    Hola Gracias por responder, estoy tratando de aplicar la ley de D'hont que distribuye de la siguiente manera

    Gráfico

    Partido A

    Partido B

    Partido C

    votos

    250.000

    200.000

    150.000

    numeral 1

    250.000

    200.000

    150.000

    numeral 2

    125.000

    100.000

    75.000

    numeral 3

    83.333

    66.666

    50.000

    numeral 4

    62.500

    50.000

    37.500

    numeral 5

    50.000

    25.000

    30.000

    En consecuencia los 5 cargos a repartir se ordenarían así:   

    1. 250.000 votos (partido A) 2. 200.000 votos (partido B) 3. 150.000 votos (partido C) 4. 125.000 votos (partido A) 5. 100.000 votos (partido B). desde ya gracias.

    miércoles, 5 de junio de 2019 15:28
  • Proba con esto

    var maximo = lstModel.OrderBy(0=>o.Votos).Max(m=>m.propiedad).First() ;

     

    Esto es asumiendo que queres ordenar primero y luego hallar el máximo.

    Bader Molinas 

    Paraguay

    • Propuesto como respuesta Carlos_Ruiz_M miércoles, 5 de junio de 2019 16:42
    • Votado como útil Carlos_Ruiz_M miércoles, 5 de junio de 2019 20:19
    • Propuesto como respuesta Carlos_Ruiz_M miércoles, 5 de junio de 2019 20:19
    miércoles, 5 de junio de 2019 15:43
  • Proba con esto

    var maximo = lstModel.OrderBy(0=>o.Votos).Max(m=>m.propiedad).First() ;

     

    Esto es asumiendo que queres ordenar primero y luego hallar el máximo.

    Bader Molinas 

    Paraguay

    Hola, lo que necesito es por ejemplo Lista 1 400 votos Lista 2 150 votos Lista 3 100 votos, eso debe dividirlo en este ejemplo 3 veces Lista1 400 /1=400, 400/2=200, 400/3 =133.33

                                   Lista2 150/1=150,  150/2=75,   150/3=50

                                   Lista3 100/1= 100, 100/2=50,    100/3 =33.33

    Entonces quedaria Primero Lista1 = 400 Segundo Lista1=200 tercero Lista2=150, de todas las divisiones tengo que sacar los maximos.Gracias

    miércoles, 5 de junio de 2019 16:00
  • Buenas, solucione de esta manera porque no se otra forma cualquier aporte bienvenido sea.Luego de obtener el primer listado agrupe todo en un campo "Obtenido"

    var lstModel2 = new List<SimpleReportViewModel>();
                foreach (var d2 in lstModel)
                {
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC1
    
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC2
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC3
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC4
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC5
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC6
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC7
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC8
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC9
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC10
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC11
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC12
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC13
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC14
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC15
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC16
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC17
                    });
                    lstModel2.Add(new SimpleReportViewModel
                    {
                        Partido = d2.Partido,
                        Obtenido = d2.EscañoC18
                    });
                }

    Luego lo ordene para sacar los maximos

     var pru = lstModel2.OrderByDescending(c1 => c1.Obtenido);

    y lo pase a otra lista mas pero restringiendo solo a 18

    var lstModel3 = new List<SimpleReportViewModel>();
                foreach (var d3 in pru.Take(18))
                {
                    lstModel3.Add(new SimpleReportViewModel
                    {
                        Partido = d3.Partido,
                        Obtenido = d3.Obtenido
                    });
                }
    y asi obtengo los 18 maximos valores

    • Marcado como respuesta EnzoTuc40 jueves, 6 de junio de 2019 0:26
    jueves, 6 de junio de 2019 0:25