C# List 复制克隆副本

 

方法一

List<string> t = new List<string>(); //original 
List<string> t2 = new List<string>(t.ToArray()); // copy of t

方法二

List<string> list1 = new List<string>();
List<string> list2 = new List<string>();

// This will copy all the items from list 1 to list 2
list1.ForEach(i => list2.Add(i));

说明:一般情况下使用=赋值即可实现相关操作,但是在使用list遍历的时候,由于list使用=赋值是引用方式,所以这种场景就不适合:

List<T> list = new App().GetList(keyword);
List<T> queryList = list;
foreach (T item in queryList)
{
    if (!string.IsNullOrEmpty(item.F_ParentId) &amp;amp;&amp;amp; item.F_ParentId != "0")
    {
         if (list.Count(m => m.F_Id == item.F_ParentId) <= 0)
         {
             ServicingItemEntity parent = new ServicingItemApp().GetForm(item.F_ParentId);
             list.Add(parent);
         }
    }
}

此时,会报“集合已修改;可能无法执行枚举操作”的错误。需要使用List复制的方法:

List<T> list = new App().GetList(keyword);
List<T> queryList = new List<T>(list.ToArray());
foreach (T item in queryList)
{
    if (!string.IsNullOrEmpty(item.F_ParentId) &amp;amp;amp;&amp;amp;amp; item.F_ParentId != "0")
    {
         if (list.Count(m => m.F_Id == item.F_ParentId) <= 0)
         {
             ServicingItemEntity parent = new ServicingItemApp().GetForm(item.F_ParentId);
             list.Add(parent);
         }
    }
}

两者的区别在于:

List<T> queryList = list; 

调整为了:

List<T> queryList = new List<T>(list.ToArray());
—— 完 ——
相关推荐
评论

立 为 非 似

中 谁 昨 此

宵 风 夜 星

。 露 , 辰

文章点击榜

细 无 轻 自

如 边 似 在

愁 丝 梦 飞

。 雨 , 花