【问题标题】:how to copy a list to a new list, or retrieve list by value in c#如何将列表复制到新列表,或在 C# 中按值检索列表
【发布时间】:2010-12-20 02:23:24
【问题描述】:

我注意到在 c# 中有一个 Lists 的方法: CopyTo -> 复制到数组,有没有更好的方法复制到新列表?问题是,我想按值检索列表以便能够在显示之前删除项目,我不想修改原始列表,这似乎也不容易实现,有什么想法吗?

【问题讨论】:

    标签: c# asp.net class list


    【解决方案1】:
    List<MyType> copy = new List<MyType>(original);
    

    【讨论】:

    • 修改列表中的元素(不添加或删除)仍然会影响两个列表...
    • 正如@Zoop 所说,它不起作用。当列表中的某些内容发生更改时,它也会在原始列表中进行更改。
    • 它不工作
    【解决方案2】:

    我想按值检索列表,以便能够在显示它们之前删除它们,

    var newlist = oldList.Where(<specify condition here>).ToList();
    

    【讨论】:

      【解决方案3】:

      如果您使用的是 .NET 3.5,则生成的数组可以调用 ToList()。

      【讨论】:

        【解决方案4】:

        只需创建一个新的List 并使用适当的构造函数:

        IList<Obj> newList = new List<Obj>(oldList);
        

        【讨论】:

        • 修改列表中的元素(不添加或删除)仍然会影响两个列表...
        【解决方案5】:

        我认为这会奏效。将列表传递给新列表的构造函数。

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

        【讨论】:

        • 修改列表中的元素(不添加或删除)仍然会影响两个列表...
        【解决方案6】:

        您是否尝试过克隆 (Clone()) 每个项目并将克隆添加到新集合中?

        【讨论】:

          【解决方案7】:

          如果你有一个参考列表,这个列表

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

          不工作。

          这应该可以解决您的问题:

          How do I clone a generic list in C#?

          【讨论】:

          • 问题是关于复制,而不是克隆
          猜你喜欢
          • 1970-01-01
          • 2021-09-06
          • 1970-01-01
          • 2020-10-09
          • 2016-02-28
          • 2021-07-02
          • 2020-04-11
          • 1970-01-01
          • 2022-01-23
          相关资源
          最近更新 更多