将 Bson 复制到另一个变量而不更改原始变量?
Copy the Bson to another variable without changing original?
我想在变量和临时变量中保留一个 BsonDocument。哪个应该使用不同的内存并且改变一个不会影响另一个。我如何实现这一目标。当我更改临时变量时,原始变量也 changed.using c# dotnet core 3.1
var obj1 = await db.GetBuildingName(); //from db bsondocuments
var obj2 = await db.HierarchyCatalogues();//from db list of bsondocuments
var tempobj = new BsonDocument();
tempobj = obj1;
BsonArray catlist = new BsonArray();
foreach (var term in obj2) { catlist.Add(term); }
tempobj.Add(new BsonElement("metadata", catlist));
当我将元数据添加到 tempobject 时,它也反映在 obj1
与所有引用类型一样,如果您想拥有一个实例的副本,则必须克隆该对象。 BsonDocument
实现了两种克隆方法:Clone(浅克隆)和DeepClone。我想你在寻找 DeepClone 解决方案:
using MongoDB.Bson;
var tempobj = obj1.DeepClone().ToBsonDocument();
我想在变量和临时变量中保留一个 BsonDocument。哪个应该使用不同的内存并且改变一个不会影响另一个。我如何实现这一目标。当我更改临时变量时,原始变量也 changed.using c# dotnet core 3.1
var obj1 = await db.GetBuildingName(); //from db bsondocuments
var obj2 = await db.HierarchyCatalogues();//from db list of bsondocuments
var tempobj = new BsonDocument();
tempobj = obj1;
BsonArray catlist = new BsonArray();
foreach (var term in obj2) { catlist.Add(term); }
tempobj.Add(new BsonElement("metadata", catlist));
当我将元数据添加到 tempobject 时,它也反映在 obj1
与所有引用类型一样,如果您想拥有一个实例的副本,则必须克隆该对象。 BsonDocument
实现了两种克隆方法:Clone(浅克隆)和DeepClone。我想你在寻找 DeepClone 解决方案:
using MongoDB.Bson;
var tempobj = obj1.DeepClone().ToBsonDocument();