Si vous avez besoin d'un clone profond de la liste d'origine, vous trouverez la réponse dans cette question connexe: stackoverflow.com/questions/222598/…
Dirk Vollmar
Réponses:
555
Vous pouvez essayer ceci:
List<Int32> copy =newList<Int32>(original);
ou si vous utilisez C # 3 et .NET 3.5, avec Linq, vous pouvez le faire:
Si les éléments sont de type MyClassau lieu de Integer, les copient-ils également ou les référencent-ils simplement?
Pedro Moreira
6
Ne fonctionne pas avec les types non primitifs. List <StudentClass> copy = new List <StudentClass> (lstStudentClass);
criard
4
Il fonctionne avec tous les types, tant qu'il lstStudentClassest IEnumerable<StudentClass>, il fonctionnera. Si vous ressentez le contraire, vous devez fournir plus d'informations.
Lasse V. Karlsen
1
quel est le sens de (original); à la fin
Rahul Chaudhari
1
Vous transmettez une collection au constructeur de la liste, et le constructeur copiera ensuite tous les éléments de cette collection dans la liste nouvellement créée.
Lasse V. Karlsen
170
Pour ajouter le contenu d'une liste à une autre liste qui existe déjà, vous pouvez utiliser:
targetList.AddRange(sourceList);
Si vous souhaitez simplement créer une nouvelle copie de la liste, consultez la réponse de Lasse.
La sérialisation crée-t-elle une baisse significative des performances?
Dan Def
0
OK, cela fonctionne bien D'après les suggestions ci-dessus, GetRange () ne fonctionne pas pour moi avec une liste comme argument ... donc adoucissez un peu les articles ci-dessus: (merci à tous :)
/* Where __strBuf is a string list used as a dumping ground for data */publicList<string> pullStrLst(){List<string> lst;
lst = __strBuf.GetRange(0, __strBuf.Count);
__strBuf.Clear();return( lst );}
mmm ... ok et bien certaines des suggestions ci-dessus ne fonctionnent tout simplement pas dans Vis 17 J'ai nettoyé la meilleure réponse fournie ... et bon hop ... ça marche :)
Jim Stevens
0
Facile à mapper différents ensembles de liste par linq sans boucle
Réponses:
Vous pouvez essayer ceci:
ou si vous utilisez C # 3 et .NET 3.5, avec Linq, vous pouvez le faire:
la source
MyClass
au lieu deInteger
, les copient-ils également ou les référencent-ils simplement?lstStudentClass
estIEnumerable<StudentClass>
, il fonctionnera. Si vous ressentez le contraire, vous devez fournir plus d'informations.Pour ajouter le contenu d'une liste à une autre liste qui existe déjà, vous pouvez utiliser:
Si vous souhaitez simplement créer une nouvelle copie de la liste, consultez la réponse de Lasse.
la source
Pour une liste d'éléments
Si vous souhaitez copier tous les éléments
Si vous souhaitez copier les 3 premiers éléments
la source
Et c'est si la copie d'une seule propriété dans une autre liste est nécessaire:
la source
Cette méthode créera une copie de votre liste mais votre type doit être sérialisable.
Utilisation:
Méthode:
la source
OK, cela fonctionne bien D'après les suggestions ci-dessus, GetRange () ne fonctionne pas pour moi avec une liste comme argument ... donc adoucissez un peu les articles ci-dessus: (merci à tous :)
la source
Facile à mapper différents ensembles de liste par linq sans boucle
la source
Voici une autre méthode mais c'est un peu moins bien comparé aux autres.
la source
ToList()
directement?