una recorrer otra llenar lista insertar eliminar elementos elemento dentro como array agregar c# oop list foreach copy

c# - recorrer - ¿Cómo copio elementos de una lista a otra sin foreach?



llenar lista c# (7)

¿Cómo transfiero los elementos contenidos en una List a otra en C # sin usar foreach ?


Aquí hay otro método pero es un poco peor comparado con otro.

List<int> i=original.Take(original.count).ToList();


Este método creará una copia de su lista, pero su tipo debe ser serializable.

Utilizar:

List<Student> lstStudent = db.Students.Where(s => s.DOB < DateTime.Now).ToList().CopyList();

Método:

public static List<T> CopyList<T>(this List<T> lst) { List<T> lstCopy = new List<T>(); foreach (var item in lst) { using (MemoryStream stream = new MemoryStream()) { BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(stream, item); stream.Position = 0; lstCopy.Add((T)formatter.Deserialize(stream)); } } return lstCopy; }


OK, esto está funcionando bien. De las sugerencias anteriores, GetRange () no funciona para mí con una lista como argumento ... así que estoy mejorando un poco las publicaciones anteriores: (gracias a todos :)

/* Where __strBuf is a string list used as a dumping ground for data */ public List < string > pullStrLst( ) { List < string > lst; lst = __strBuf.GetRange( 0, __strBuf.Count ); __strBuf.Clear( ); return( lst ); }


Para agregar el contenido de una lista a otra lista que ya existe, puede usar:

targetList.AddRange(sourceList);

Si solo desea crear una nueva copia de la lista, vea la respuesta de Lasse.


Para una lista de elementos.

List<string> lstTest = new List<string>(); lstTest.Add("test1"); lstTest.Add("test2"); lstTest.Add("test3"); lstTest.Add("test4"); lstTest.Add("test5"); lstTest.Add("test6");

Si quieres copiar todos los elementos.

List<string> lstNew = new List<string>(); lstNew.AddRange(lstTest);

Si quieres copiar los 3 primeros elementos.

List<string> lstNew = lstTest.GetRange(0, 3);


Podrías probar esto:

List<Int32> copy = new List<Int32>(original);

o si está utilizando C # 3 y .NET 3.5, con Linq, puede hacer esto:

List<Int32> copy = original.ToList();


Y esto es si se necesita copiar una sola propiedad a otra lista:

targetList.AddRange(sourceList.Select(i => i.NeededProperty));