none
Propiedad .Max() en objetos tipo LIST RRS feed

  • Pregunta

  • Hola.

    Tengo una Lista con varias propiedades, y de una propiedad(columna) del tipo int, quiero saber cuál es su valor máximo entre todos los registros. Estoy intentado usar el método list.Max() y funciona, el problema es que quiero recorrer esta lista con un foreach para lo cual tengo el siguiente error:

    la instrucción foreach no puede funcionar en variables de tipo int

    Cómo podría hacer para filtrar mi lista sólo con los registros máximos y poder recorrerla  ?

    Les adjunto un pedacito de mi código:

    foreach (var reclamo in tramite.Reclamos.Where(r => r.FechaReingreso == null).ToList())
    {     
       foreach (var items in reclamo.TramiteReclamoItems.Max(obj => obj.TramiteReclamo.NumeroReclamo))    
        {                                            
        //Reclamos     
        }
    }

    Gracias.


    martes, 16 de abril de 2019 13:10

Respuestas

  • Cómo podría hacer para filtrar mi lista sólo con los registros máximos y poder recorrerla  ?

    Podrias primero calcular el maximo y luego aplicar un Where que use ese valor:

       int valorMaximo = reclamo.TramiteReclamoItems.Max(obj => obj.TramiteReclamo.NumeroReclamo);
       foreach (var items in reclamo.TramiteReclamoItems.Where(obj => obj.TramiteReclamo.NumeroReclamo == valormaximo))    
        {                                            
        //Reclamos     
        }
    De esta manera, solo se recorren los registros que contienen dicho valor maximo.

    • Propuesto como respuesta Carlos_Ruiz_M martes, 16 de abril de 2019 14:37
    • Marcado como respuesta Uriel Galanis martes, 16 de abril de 2019 17:59
    martes, 16 de abril de 2019 14:07
    Moderador

Todas las respuestas

  • Hola, no te hace falta hacer ese doble bucle y el error se da porque un entero no contiene un enumerator.

    Si nos pones la definicion del tus clases Reclamo y TramiteReclamoItems se podría dar una solución con Linq-.


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    • Propuesto como respuesta Carlos_Ruiz_M martes, 16 de abril de 2019 14:36
    martes, 16 de abril de 2019 14:00
    Moderador
  • hola

    el Max() retorna un valor simple, lo que podrias hacer es ordenar de mayor a menos para iterarla

    var items = reclamo.TramiteReclamoItems.OrderByDescending(obj => obj.TramiteReclamo.NumeroReclamo)
    
    foreach (var items in items){
    
    }

    >>Cómo podría hacer para filtrar mi lista sólo con los registros máximos y poder recorrerla  ?

    como defines que es un "registro maximo"?no tiene sentido lo que plantea

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

     
    martes, 16 de abril de 2019 14:03
  • Cómo podría hacer para filtrar mi lista sólo con los registros máximos y poder recorrerla  ?

    Podrias primero calcular el maximo y luego aplicar un Where que use ese valor:

       int valorMaximo = reclamo.TramiteReclamoItems.Max(obj => obj.TramiteReclamo.NumeroReclamo);
       foreach (var items in reclamo.TramiteReclamoItems.Where(obj => obj.TramiteReclamo.NumeroReclamo == valormaximo))    
        {                                            
        //Reclamos     
        }
    De esta manera, solo se recorren los registros que contienen dicho valor maximo.

    • Propuesto como respuesta Carlos_Ruiz_M martes, 16 de abril de 2019 14:37
    • Marcado como respuesta Uriel Galanis martes, 16 de abril de 2019 17:59
    martes, 16 de abril de 2019 14:07
    Moderador
  • hola

    el Max() retorna un valor simple, lo que podrias hacer es ordenar de mayor a menos para iterarla

    var items = reclamo.TramiteReclamoItems.OrderByDescending(obj => obj.TramiteReclamo.NumeroReclamo)
    
    foreach (var items in items){
    
    }

    >>Cómo podría hacer para filtrar mi lista sólo con los registros máximos y poder recorrerla  ?

    como defines que es un "registro maximo"?no tiene sentido lo que plantea

    Leandro, primero que nada gracias por tu respuesta.

    A lo que me refiero con un registro máximo, es que esta lista tiene varias columnas, una de ellas es el número de reclamo, para el cual puede existir más de un registro para el mismo número de reclamo. Sólo quiero traer aquellos registros del último número de reclamo, para ello es que necesitaba conocer el máximo ya que es un id incremental.

    Gracias nuevamente por tu respuesta!

    martes, 16 de abril de 2019 17:58
  • Muchas gracias Carlos! 

    Ya tengo la idea de como solucionarlo. 

    martes, 16 de abril de 2019 18:00