The Geek Inside

Julio Carlos Sánchez Blog

Como convertir un List<TypeA> a un List<TypeB>

En ocasiones nos surge la necesidad de pasar los datos de un List<TypeA> a otro List<> conteniendo un objeto de tipo diferente.

Lo primero que se nos ocurre es:

  • Crear un List<> con el tipo destino.
  • Realizar un foreach sobre el List<> con el tipo fuente.
  • Y por cada uno de los elementos:
    • Convertirlo al tipo destino.
    • Agregarlo a la lista destino

Para ejemplificar esto seguiremos los siguientes pasos:

Creamos la lista fuente y agregamos algunos objetos:

View CodeCSHARP
1
2
3
4
5
List<TipoFuente> listaFuente = new List<TipoFuente>();
 
listaFuente.Add(new TipoFuente(2));
listaFuente.Add(new TipoFuente(5));
listaFuente.Add(new TipoFuente(7));

Implementamos el algoritmo descrito anteriormente:

View CodeCSHARP
7
8
9
10
11
12
List<TipoDestino> listaDestino = new List<TipoDestino>();
 
foreach(TipoFuente f in listaFuente)
{
    listaDestino.Add(new TipoDestino(f.id));
}

Esto seguramente funciona, sin embargo existe una manera más sencilla de hacerlo: Usando el método de la clase List llamado ConverAll.

En seguida muestro un fragmento de como implementar la conversión usando dicho método:

View CodeCSHARP
7
8
9
10
11
12
13
List<ConsParamAlertas> consultas;
listaDestino = ((List< TipoFuente >) listaFuente)
                                            .ConvertAll<TipoDestino>(
                                            delegate(TipoFuente f)
                                            {
                                                return (new TipoDestino(f.id));
                                            });

Espero que este pequeño ejemplo les sirva cuando tengan que Convertir un List<TypeA> a un List<TypeB> ;).

 |  Related posts

No comments yet. Be the first.

Leave a reply

Mexico