如何将项目从列表中复制到列表中?

如何将包含在一个List的项目转移到另一个C#中,而不使用foreach

你可以试试这个:

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

或者如果你使用Linq的C#3和.NET 3.5,你可以这样做:

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

要将一个列表的内容添加到已存在的另一个列表中,可以使用:

 targetList.AddRange(sourceList); 

如果你只是想创build一个新的副本,请参阅Lasse的答案。

有关元素的列表

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

如果你想复制所有的元素

 lstNew.AddRange(lstTest); 

如果你想复制前4个元素

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

这个方法将创build你的列表的副本,但是你的types应该是可序列化的。

使用:

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

方法:

 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; } 

这是如果需要将单个属性复制到另一个列表:

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

确定这是行之有效的从上面的build议GetRange()不适用于列表作为参数…所以从上面的post增加了一点东西:(谢谢大家:)

 /* 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 ); } 

这里是另一种方法,但与其他方法相比,这种方法更糟

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