Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C复制列表无参考_C#_List - Fatal编程技术网

C# C复制列表无参考

C# C复制列表无参考,c#,list,C#,List,我有一个需要复制的列表,然后根据列表行的条件修改该行的字段并将其添加到第二个列表中 这是一个代码示例: //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.c

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

这是一个代码示例:

//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);
     }
}
编辑:

我看了其他问题,但就我而言,我只有一个动态列表。不必创建类和实现iClonable就可以得到我想要的结果吗?

试试看

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

实现iClonable并调用var list2=list1.Selecti=>i.Clone.ToList可能。但在实现中,op必须编写大致相同的代码。虽然有两个不同的列表,但这些列表中的元素是相同的,因此,修改一个列表中的任何元素,surley也会修改另一个列表中的元素。@SilentRage47您想克隆该对象,但无权访问它吗?嗯,也许你可以使用一种扩展方法,尽管这可能会变成混乱的反射,这取决于东西的可视性和不可视性。如果你不知道你的实际对象,就不可能克隆它们。请看这里进一步的解释:我尝试过,但它给了我同样的结果。这两个列表都已更新。@SilentRage47,当您说list.AddnewObjlist2时,您要添加到哪个列表中,我更正了代码示例。@praty我认为这只适用于值类型,动态应该是引用类型
var list2 = list1.Select(x => x);