[英]Deep cloning List Object
我需要知道如何深度克隆List <Business>
对象。 我尝试了以下方法:
List< Business> owner = bus.Select(m => new Business{
Businessname= m.Businessname,
Locations= m.Locations,
}).ToList();
我从owner
对象中删除了一个对象( Locations
-Locations是List <Country>
)。 如上代码所示,我在克隆bus
对象时预期不会有任何更改。
但是,对象Locations
也已从bus
对象中删除。 有人可以告诉我如何解决这个问题吗?
您应该按照以下步骤执行克隆操作:
List< Business> owner = bus.Select(m => new Business
{
Businessname = m.Businessname,
Locations = m.Locations?.Select(l => new Country { /*here goes your initialization*/})
})
.ToList();
操作员?
进行null检查,如果Locations
字段为null
它将停止执行并返回null
,否则它将执行Select
操作。
请注意,如果Country
对象还包含引用类型的字段,则应显式创建该对象并复制所有字段。
几乎克隆任何对象或数据结构的最简单,最通用的方法是对其进行序列化和反序列化。 Newtonsoft JSON非常快速且智能,足以处理复杂的情况,例如循环引用,接口类型的字段等。
var str = JsonConvert.SerializeObject(myList);
var deepCopy = JsonConvert.DeserializeObject<List<MyObject>>(str);
但是,这可能不是最快的方法,因为它做了很多额外的工作和分配。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.