C#copy List <dynamic>,不带引用

时间:2017-07-13 14:02:13

标签: c# list

我需要复制List<dynamic>,然后根据列表行的条件修改该行的字段并将其添加到第二个列表中。

这是一段代码示例:

//list1 is a `List<dynamic>` that I get from a query using Dapper. I guess it is an ExpandoObject list

var list2 = new List<dynamic>(list1);

foreach (var obj in list2)
{
     if (obj.condition == 1)
     {
         var newObj = obj;
         newObj.description = "new row";
         list2.Add(newObj);
     }
}

我的问题是,在我的列表中,列表中的obj都会更新为字符串&#39; new row&#39;。

似乎每次更改newObj时,两个列表都会更新。

我也尝试以这种方式创建list2,但我遇到了同样的问题:

var list2 = new BindingList<dynamic>(list1);

编辑:

我查看了其他问题但在我的情况下,我只有一个dynamic列表。是否有可能获得我想要的结果而无需创建Class并实施ICloneable

1 个答案:

答案 0 :(得分:-1)

尝试

var list2 = list1.Select(x => x);