如何在没有foreach的情况下将项目从列表复制到列表?

rat*_*tty 297 c# oop foreach copy list

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

ang*_*son 528

你可以试试这个:

List<Int32> copy = new List<Int32>(original);
Run Code Online (Sandbox Code Playgroud)

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

List<Int32> copy = original.ToList();
Run Code Online (Sandbox Code Playgroud)

  • 如果项目类型为"MyClass"而不是"Integer",那么它是否也会复制项目,或者仅引用它们? (13认同)
  • 不使用非基本类型.List <StudentClass> copy = new List <StudentClass>(lstStudentClass); (5认同)
  • 它适用于所有类型,只要`lstStudentClass`是一个`IEnumerable <StudentClass>`,它就可以工作.如果您遇到其他情况,则需要提供更多信息. (4认同)
  • @PedroMoreira 对于复杂对象,您可以执行以下操作:`originnal.Select(o =&gt; new Complex(o)).ToList()` 以获取新对象的列表,而不是复制的引用 (3认同)

Jon*_*eet 165

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

targetList.AddRange(sourceList);
Run Code Online (Sandbox Code Playgroud)

如果您只是想创建列表的新副本,请参阅Lasse的答案.

  • @mrmillsy:他们做了不同的事情.我的回答集中在"我已经有一个列表,我想把它复制到它" (6认同)
  • 如果您想完全替换现有列表的内容,您可以先调用 targetList.Clear()。 (3认同)

Par*_*ras 31

有关元素列表

List<string> lstTest = new List<string>();

lstTest.Add("test1");
lstTest.Add("test2");
lstTest.Add("test3");
lstTest.Add("test4");
lstTest.Add("test5");
lstTest.Add("test6");
Run Code Online (Sandbox Code Playgroud)

如果要复制所有元素

List<string> lstNew = new List<string>();
lstNew.AddRange(lstTest);
Run Code Online (Sandbox Code Playgroud)

如果要复制前3个元素

List<string> lstNew = lstTest.GetRange(0, 3);
Run Code Online (Sandbox Code Playgroud)


use*_*Bee 5

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

targetList.AddRange(sourceList.Select(i => i.NeededProperty));
Run Code Online (Sandbox Code Playgroud)