将 BindingList<T> 转换为 T 数组

3
什么是将BindingList<T>转换为T[]最简单的方法?
编辑:我正在使用此项目的3.0版本,因此没有LINQ。

另外:只要您拥有C# 3.0编译器(或VS2008),就可以在.NET 3.0中使用LINQ。只需引用LINQBridge即可。 - Marc Gravell
3个回答

9

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

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

3
在 .Net 2 中,您需要在 BindingList<T> 上使用 .CopyTo() 方法。

1

我修改了这篇文章,因为我注意到你标记了 .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
@annakata; 严格来说,更重要的是它是C# 2.0还是C# 3.0,因为LINQ仍然可用于.NET 2.0 + C# 3.0 + 一些相当简单的方法等(或者只需使用LINQBridge)。 - Marc Gravell
@Tant102 - 我更喜欢你的原始答案 ;-p List<T>方法有点过度,而且(至少对于大数据而言)有点低效。 - Marc Gravell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接