Copiar una lista en C#

Muhammad Maisam Abbas 16 febrero 2024
  1. Copiar una lista con Linq en C#
  2. Copiar una lista con el constructor de listas en C#
Copiar una lista en C#

Este tutorial presentará métodos para copiar una lista en C#.

Copiar una lista con Linq en C#

Linq puede realizar consultas similares a SQL en estructuras de datos en C#. Podemos usar Linq con el método predefinido item.Clone(/) para crear una copia de una lista. Vea el siguiente ejemplo.

using System;
using System.Collections.Generic;
using System.Linq;

namespace copy_a_list {
  static class Extensions {
    public static List<T> Clone<T>(this List<T> listToClone)
        where T : ICloneable {
      return listToClone.Select(item => (T)item.Clone()).ToList();
    }
  }
  class Program {
    static void Main(string[] args) {
      List<string> slist = new List<string> { "ABC", "DEF", "GHI" };
      List<string> tlist = slist.Clone();
      foreach (var t in tlist) {
        Console.WriteLine(t);
      }
    }
  }
}

Producción :

ABC
DEF
GHI

Creamos la función de extensión Clone() para ser utilizada con una lista genérica. La función Clone() utiliza la función item.Clone() para hacer una copia separada de cada elemento dentro de la lista y luego devuelve el resultado en forma de lista con la función ToList() en C#. En la función principal, inicializamos la lista de cadenas slist y la clonamos en otra lista de cadenas tlist. Podemos usar este enfoque tanto con la lista de valores como con la lista de referencias.

Copiar una lista con el constructor de listas en C#

Otro método más simple para crear una copia de una lista es usar el constructor de listas en C#. Podemos pasar la lista anterior al constructor de la nueva lista para crear una copia de la lista anterior. El siguiente ejemplo de código nos muestra cómo crear una copia separada de una lista con el constructor de listas en C#.

using System;
using System.Collections.Generic;
using System.Linq;

namespace copy_a_list {
  class Program {
    static void method2() {}
    static void Main(string[] args) {
      List<string> slist = new List<string> { "ABC", "DEF", "GHI" };
      List<string> tlist = new List<string>(slist);
      foreach (var t in tlist) {
        Console.WriteLine(t);
      }
    }
  }
}

Producción :

ABC
DEF
GHI

Este código es mucho más simple y más fácil de entender que el enfoque anterior. En el código anterior, creamos una copia separada de la lista slist en la tlist pasando slist como argumento del constructor de tlist. Solo podemos usar este enfoque con la lista de valores.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Artículo relacionado - Csharp List