【问题标题】:Convert a BindingList<T> to an array of T将 BindingList<T> 转换为 T 的数组
【发布时间】:2009-03-06 11:10:02
【问题描述】:

BindingList&lt;T&gt; 转换为T[] 的最简单方法是什么?

编辑:我正在为这个项目使用 3.0,所以没有 LINQ。

【问题讨论】:

  • 旁白:只要您有 C# 3.0 编译器(或 VS2008),您仍然可以将 LINQ 与 .NET 3.0 一起使用。只需参考 LINQBridge。

标签: c# .net generics .net-3.0


【解决方案1】:

好吧,如果您有 LINQ(C# 3.0 + .NET 3.5 或 LINQBridge),您可以使用 .ToArray() - 否则,只需创建一个数组并复制数据。

T[] arr = new T[list.Count];
list.CopyTo(arr, 0);

【讨论】:

    【解决方案2】:

    在 .Net 2 中,您必须在 BindingList&lt;T&gt; 上使用 .CopyTo() 方法

    【讨论】:

      【解决方案3】:

      自从我注意到您使用 .net2.0 标记此帖子后,我已更改此帖子。你可以使用 List,因为它有一个 ToArray() 方法。

      public T[] ToArray<T>(BindingList<T> bindingList) {
          if (bindingList == null)
              return new T[0];
      
          var list = new List<T>(bindingList);
          return list.ToArray();
      }
      

      注意:与其他成员展示的 CopyTo 解决方案相比,这确实是一个性能较低的解决方案。改用他们的解决方案,这个创建了两个数组,一个是结果数组,一个是 List 实例的内部数组。

      【讨论】:

      • 问题标记为 .net2.0
      • @annakata; 严格来说来说,它是 C# 2.0 还是 C# 3.0 更相关,因为 .NET 2.0 + C# 3.0 + 一些相当简单的方法等(或只是 LINQBridge)仍然可以使用 LINQ。跨度>
      • @Tant102 - 我更喜欢你原来的答案 ;-p List 方法有点矫枉过正,而且(至少对于大数据)有点低效。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-09
      • 1970-01-01
      • 1970-01-01
      • 2012-12-09
      相关资源
      最近更新 更多