Antworten:
Sie könnten dies versuchen:
List<Int32> copy = new List<Int32>(original);
Wenn Sie C # 3 und .NET 3.5 mit Linq verwenden, können Sie Folgendes tun:
List<Int32> copy = original.ToList();
MyClass
statt sind Integer
, werden dann auch die Elemente kopiert oder nur referenziert?
lstStudentClass
es ein ist IEnumerable<StudentClass>
, wird es funktionieren. Wenn Sie etwas anderes erleben, müssen Sie weitere Informationen bereitstellen.
Um den Inhalt einer Liste zu einer anderen Liste hinzuzufügen, die bereits vorhanden ist, können Sie Folgendes verwenden:
targetList.AddRange(sourceList);
Wenn Sie nur eine neue Kopie der Liste erstellen möchten, lesen Sie die Antwort von Lasse.
Für eine Liste von Elementen
List<string> lstTest = new List<string>();
lstTest.Add("test1");
lstTest.Add("test2");
lstTest.Add("test3");
lstTest.Add("test4");
lstTest.Add("test5");
lstTest.Add("test6");
Wenn Sie alle Elemente kopieren möchten
List<string> lstNew = new List<string>();
lstNew.AddRange(lstTest);
Wenn Sie die ersten 3 Elemente kopieren möchten
List<string> lstNew = lstTest.GetRange(0, 3);
Und dies ist der Fall, wenn eine einzelne Eigenschaft in eine andere Liste kopiert werden muss:
targetList.AddRange(sourceList.Select(i => i.NeededProperty));
Diese Methode erstellt eine Kopie Ihrer Liste, aber Ihr Typ sollte serialisierbar sein.
Verwenden:
List<Student> lstStudent = db.Students.Where(s => s.DOB < DateTime.Now).ToList().CopyList();
Methode:
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, das funktioniert gut. Aus den obigen Vorschlägen geht hervor, dass GetRange () für mich mit einer Liste als Argument nicht funktioniert ... also versüßen Sie die Dinge ein wenig aus den obigen Beiträgen: (Danke an alle :)
/* 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 );
}