【问题标题】:Converting ObservableCollection to List?将 ObservableCollection 转换为列表?
【发布时间】:2009-11-01 22:39:42
【问题描述】:

如何将持有对象的ObservableCollection 转换为List

【问题讨论】:

    标签: c# observablecollection


    【解决方案1】:

    只需要添加命名空间using System.Linq;

    并在 ObservableCollection 对象中使用 ToList() 方法

    【讨论】:

    • 我希望下次遇到这个问题时能记住这一点。
    【解决方案2】:

    取决于ObservableCollection 中的对象类型...对于本示例,我假设它是int

    IEnumerable<int> obsCollection = (IEnumerable<int>)GetCollection();
    var list = new List<int>(obsCollection);
    

    【讨论】:

    • @Matthew,我在没有不必要的显式转换的情况下重写了它 - 如果您不喜欢这种方式,请将其改回。
    • @280Z28:根据最初的问题,他正在获取一个对象作为他的收藏,在这种情况下,某个地方需要一个演员表。
    • 为什么要将其转换为 IEnumerable?我不能在新的列表(这里)中过去吗?
    • 您在问题中表示您将其作为object 接收。如果您实际上将其作为ObservableCollection 接收,那么是的,演员表是不必要的。
    • 也就是说,是的,您可以在一行中完成。我只是不喜欢这里的代码 sn-ps 中很长的行(滚动很烂,每个人都知道)。
    【解决方案3】:

    鉴于ObservableCollection&lt;T&gt; 实现了IEnumerable&lt;T&gt;,您可以将其交给List&lt;T&gt; 的构造函数:

    List<T> myList = new List<T>(myObservableCollection);
    

    其中T 是集合中项目的类型。

    【讨论】:

      【解决方案4】:

      ObservableCollection 实现了IList&lt;T&gt;,所以你应该可以在上面使用ToList()

      http://msdn.microsoft.com/en-us/library/bb342261.aspx

      【讨论】:

      • 仅在 LINQ 的 3.5 中,我认为从 IEnumerable 自己创建列表更容易。如果您只有一个对象,这仍然涉及强制转换。
      【解决方案5】:

      【讨论】:

        【解决方案6】:

        我认为这里的问题是,当您尝试将 ObservableCollection 转换为 List 或使用时,它可能会被即时修改,因此您可能需要使用各种看门狗计时器,直到 ObservableCollection 完成

        【讨论】:

          猜你喜欢
          • 2018-12-02
          • 2014-11-05
          • 1970-01-01
          • 2013-09-01
          • 2017-08-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-23
          相关资源
          最近更新 更多