Come trasferire gli articoli contenuti in uno List
in un altro in C# senza utilizzare foreach
?Come posso copiare elementi da un elenco all'altro senza foreach?
risposta
Si potrebbe provare questo:
List<Int32> copy = new List<Int32>(original);
o se si sta utilizzando C# 3 e .NET 3.5, con LINQ, si può fare questo:
List<Int32> copy = original.ToList();
Se gli elementi sono di tipo ' MyClass' invece di 'Integer', copia anche gli elementi o fa semplicemente riferimento a loro? –
Non funziona con tipi non primitivi. Elenco
Funziona con tutti i tipi, a patto che 'lStStudentClass' sia un' IEnumerable
Per aggiungere il contenuto di una lista ad un'altra lista che già esiste, è possibile utilizzare:
targetList.AddRange(sourceList);
Se siete semplicemente desideroso di creare una nuova copia della lista, vedere la risposta di Lasse.
Is.AddRange più performante di New List = IEnum.ToList()? – mrmillsy
@mrmillsy: Beh, fanno cose diverse. La mia risposta è incentrata su "Ho già una lista e voglio copiare le cose" –
Vero. La mia domanda sarebbe probabilmente più adatta ad una nuova domanda comunque. Grazie per la risposta però. – mrmillsy
Qui un altro metodo, ma è un po 'peggio confrontare con altri.
List<int> i=original.Take(original.count).ToList();
Perché dovresti farlo? Perché non 'ToList()' direttamente? – nawfal
Per un elenco di elementi
List<string> lstTest = new List<string>();
lstTest.Add("test1");
lstTest.Add("test2");
lstTest.Add("test3");
lstTest.Add("test4");
lstTest.Add("test5");
lstTest.Add("test6");
Se si desidera copiare tutti gli elementi
List<string> lstNew = new List<string>();
lstNew.AddRange(lstTest);
Se si desidera copiare i primi 3 elementi
List<string> lstNew = lstTest.GetRange(0, 3);
Questo metodo creerà una copia della tua l ist ma il tuo tipo dovrebbe essere serializzabile.
Usa:
List<Student> lstStudent = db.Students.Where(s => s.DOB < DateTime.Now).ToList().CopyList();
Metodo:
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;
}
La serializzazione crea una significativa riduzione delle prestazioni? –
E questo è se la copia di una singola proprietà di un altro elenco che è necessario:
targetList.AddRange(sourceList.Select(i => i.NeededProperty));
OK questo è funziona bene Dai suggerimenti di cui sopra getRange() non funziona per me con una lista come argomento ... così addolcire le cose un po 'da messaggi di cui sopra: (grazie a tutti :)
/* 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);
}
Questa non è nemmeno una risposta. –
mmm ... ok bene alcuni dei suggerimenti sopra semplicemente non funzionano in Vis 17 Ho ripulito la migliore risposta fornita ... e hey presto ... funziona :) –
- 1. come modificare gli elementi in un Elenco generico usando foreach?
- 2. Eliminare tutti gli elementi da un elenco
- 3. Posso copiare un hash senza resettare il suo "ogni" iteratore?
- 4. Come ottenere caratteri da Stringstream senza copiare?
- 5. Come posso spostare elementi da un elenco a un altro elenco in C#?
- 6. Selezionare più elementi da un elenco
- 7. Python: rimuovere molti elementi da un elenco
- 8. Rimuovi elementi da un elenco in un altro
- 9. restituisce un elenco di elementi da un elenco in OCaml
- 10. Come posso copiare file da un ramo all'altro usando git?
- 11. Come copiare un elenco in Scala
- 12. Prolog rimuovi elementi multipli da un elenco
- 13. Rimozione di elementi da un elenco
- 14. In C# come posso deserializzare un documento XML contenente un elenco di elementi senza un elemento di elenco circostante
- 15. Elenco ForEach break
- 16. Come posso aggiungere elementi da una listbox a un elenco facendo clic su un pulsante senza codebehind?
- 17. Come posso raggruppare in base a un elenco di elementi?
- 18. Come posso creare un elenco con solo alcuni elementi espandibili?
- 19. Come si estrae elementi distinti da un elenco?
- 20. Python - Come estrarre gli ultimi x elementi da un elenco
- 21. D: Aggiunta di elementi alla matrice senza copiare
- 22. Prendere n elementi casuali da un elenco <E>?
- 23. Elenco generico FindAll() vs. foreach
- 24. È possibile rimuovere elementi in un elenco di un elenco senza perdere il riferimento originale?
- 25. Posso creare un VarArray OleVariant da un buffer (pByte) e una dimensione senza copiare?
- 26. Come copiare valori, non riferimenti, di Elenco <Integer> in un altro elenco?
- 27. Come rimuovere elementi da un elenco a discesa ASP.NET senza sapere nulla sui contenuti
- 28. Come ottenere elementi duplicati da un elenco utilizzando LINQ?
- 29. come copiare un elenco in un nuovo elenco o recuperare l'elenco in base al valore C#
- 30. Come posso convertire una stringa in char [] senza copiare l'oggetto?
Se avete bisogno di una profonda clone di nell'elenco originale troverai la risposta in questa domanda correlata: http://stackoverflow.com/questions/222598/how-do-i-clone-a-generic-list-in-c –