Câu trả lời:
Bạn có thể thử điều này:
List<Int32> copy = new List<Int32>(original);
hoặc nếu bạn đang sử dụng C # 3 và .NET 3.5, với Linq, bạn có thể làm điều này:
List<Int32> copy = original.ToList();
MyClass
thay vì Integer
, nó cũng sao chép các mặt hàng, hoặc chỉ tham khảo chúng?
lstStudentClass
là IEnumerable<StudentClass>
nó sẽ hoạt động. Nếu bạn có kinh nghiệm khác, bạn cần cung cấp thêm thông tin.
Để thêm nội dung của một danh sách vào danh sách khác đã tồn tại, bạn có thể sử dụng:
targetList.AddRange(sourceList);
Nếu bạn chỉ muốn tạo một bản sao mới của danh sách, hãy xem câu trả lời của Lasse.
Để biết danh sách các yếu tố
List<string> lstTest = new List<string>();
lstTest.Add("test1");
lstTest.Add("test2");
lstTest.Add("test3");
lstTest.Add("test4");
lstTest.Add("test5");
lstTest.Add("test6");
Nếu bạn muốn sao chép tất cả các yếu tố
List<string> lstNew = new List<string>();
lstNew.AddRange(lstTest);
Nếu bạn muốn sao chép 3 yếu tố đầu tiên
List<string> lstNew = lstTest.GetRange(0, 3);
Phương pháp này sẽ tạo một bản sao của danh sách của bạn nhưng loại của bạn nên được tuần tự hóa.
Sử dụng:
List<Student> lstStudent = db.Students.Where(s => s.DOB < DateTime.Now).ToList().CopyList();
Phương pháp:
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, điều này đang hoạt động tốt
/* 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 );
}