我知道这被问了很多次,我试图实现同样的.我有下面的清单
internal class GenList
{
public string Col1 { set; get; }
public string Col2 { set; get; }
}
List<GenList> MainList = new List<GenList>();
Run Code Online (Sandbox Code Playgroud)
我想将列表复制到其他列表中,如果在主列表中更改了某些内容,则不希望内容在克隆列表中更改.所以我想在下面做
List<GenList> cloned = MainList.ConvertAll(GenList => new GenList {});
Run Code Online (Sandbox Code Playgroud)
我不知道在上面那些花括号内输入什么.
Jon*_*eet 10
如果在主列表中更改了某些内容,则不希望内容在克隆列表中更改.
这听起来像你想要一个深刻的克隆,基本上.换句话说,创建一个新列表,其中每个元素是原始列表中元素的副本,而不仅仅是对原始列表引用的同一对象的引用.
在您的情况下,这很简单:
var cloned = MainList.ConvertAll(x => new GenList { Col1 = x.Col1, Col2 = x.Col2 });
Run Code Online (Sandbox Code Playgroud)
或者使用LINQ:
var cloned = MainList.Select(x => new GenList { Col1 = x.Col1, Col2 = x.Col2 })
.ToList();
Run Code Online (Sandbox Code Playgroud)
但请注意:
要考虑的选项:
DeepClone()方法GenList,将逻辑保持在一个地方,但许多地方需要它.GenList(GenList)适当地复制GenListimmutable),此时集合的浅克隆就足够了.| 归档时间: |
|
| 查看次数: |
141 次 |
| 最近记录: |