当前位置:  开发笔记 > 编程语言 > 正文

将列表复制到其他列表中

如何解决《将列表复制到其他列表中》经验,为你挑选了1个好方法。

我知道这被问了很多次,我试图实现同样的.我有下面的清单

internal class GenList
{

    public string Col1 { set; get; }
    public string Col2 { set; get; }

}

List MainList = new List();

我想将列表复制到其他列表中,如果在主列表中更改了某些内容,则不希望内容在克隆列表中更改.所以我想在下面做

List cloned = MainList.ConvertAll(GenList => new GenList {});

我不知道在上面那些花括号内输入什么.



1> Jon Skeet..:

如果在主列表中更改了某些内容,则不希望内容在克隆列表中更改.

这听起来像你想要一个深刻的克隆,基本上.换句话说,创建一个新列表,其中每个元素是原始列表中元素的副本,而不仅仅是对原始列表引用的同一对象的引用.

在您的情况下,这很简单:

var cloned = MainList.ConvertAll(x => new GenList { Col1 = x.Col1, Col2 = x.Col2 });

或者使用LINQ:

var cloned = MainList.Select(x => new GenList { Col1 = x.Col1, Col2 = x.Col2 })
                     .ToList();

但请注意:

如果添加新属性,则需要更改此代码

如果添加可变类型的属性,则还需要克隆它

要考虑的选项:

添加一个DeepClone()方法GenList,将逻辑保持在一个地方,但许多地方需要它.

添加构造函数:GenList(GenList)适当地复制

使用不可变类型(例如make GenListimmutable),此时集合的浅克隆就足够了.

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有