none
Modificacion de una Lista Enumerable RRS feed

  • Pregunta

  • Hola.

    ¿Se puede modificar una lista enumerable?

    Por ejemplo existe en linq algo mas o menos asi:

    var dim = from row in lista where row.id = 0 set row.total = 200 select row;

    Gracias y Saludos.

     Se me ocurrio una forma mejor de explicarlo:

    foreach( miclase a in lista )
    
    {
    
    if( a.id == 23 )
    
    a.Total = 0;
    
    }

    lista es mi IEnumerable<miclase>.

    Entonce quiero saber si se puede "pasar" el foreach e if a instruccion linq.

    Saludos

    domingo, 9 de enero de 2011 5:21

Respuestas

  • Bueno, podrías añadir al final una llamada al extensor Select expresando la modificación deseada mediante una lambda:

    (from row in lista where row.id = 0 select row).Select(row => row.Total=200);
    
    • Marcado como respuesta el oberto sábado, 15 de enero de 2011 20:12
    domingo, 9 de enero de 2011 8:52
  • Bueno al leer la documentacion IEnumerable<> es de solo lectura, y no se puede modificar. Asi que en vez de IEnumerable<>, use List<> y uso linq solo para encontrar el elemento y luego recupero el objeto y cambia la propiedad que me interesa del modo "normal".

    Gracias y Saludos.

    • Marcado como respuesta el oberto viernes, 14 de enero de 2011 16:03
    viernes, 14 de enero de 2011 16:03

Todas las respuestas

  • Bueno, podrías añadir al final una llamada al extensor Select expresando la modificación deseada mediante una lambda:

    (from row in lista where row.id = 0 select row).Select(row => row.Total=200);
    
    • Marcado como respuesta el oberto sábado, 15 de enero de 2011 20:12
    domingo, 9 de enero de 2011 8:52
  • Bueno al leer la documentacion IEnumerable<> es de solo lectura, y no se puede modificar. Asi que en vez de IEnumerable<>, use List<> y uso linq solo para encontrar el elemento y luego recupero el objeto y cambia la propiedad que me interesa del modo "normal".

    Gracias y Saludos.

    • Marcado como respuesta el oberto viernes, 14 de enero de 2011 16:03
    viernes, 14 de enero de 2011 16:03
  • Bueno al leer la documentacion IEnumerable<> es de solo lectura, y no se puede modificar.


    Maticemos: El IEnumerable<> es de sólo lectura, pero los objetos devueltos por el enumerador NO son de sólo lectura. Las propiedades de estos objetos sí que se pueden modificar. Lo que no se puede modificar es cuáles son los objetos que forman parte de la lista, pero las propiedades de cada uno de los objetos sí que se pueden modificar.

     

    viernes, 14 de enero de 2011 20:58
  • Volvi a probar con tu ejemplo y me funciono, la primera vez no me "funciono" ya que al no estar refrescando bien la grilla en la cual estoy mostrando la lista, conclui que no funcionaba. Ahora como refresco bien la grilla volvi a probar tu codigo y si funciona.

    Gracias por tu ayuda.

    Saludos.

    sábado, 15 de enero de 2011 20:11