【问题标题】:Conversion from List<T> to array T[]从 List<T> 到数组 T[] 的转换
【发布时间】:2009-03-10 07:13:48
【问题描述】:
有没有一种将强类型的List<T> 转换为相同类型的数组的捷径,例如:List<MyClass> 到MyClass[]?
我的意思是一个方法调用,或者至少短于:
MyClass[] myArray = new MyClass[list.Count];
int i = 0;
foreach (MyClass myClass in list)
{
myArray[i++] = myClass;
}
【问题讨论】:
标签:
c#
.net
arrays
linq
list
【解决方案1】:
尝试使用
MyClass[] myArray = list.ToArray();
【解决方案2】:
List<int> list = new List<int>();
int[] intList = list.ToArray();
这是你的解决方案吗?
【解决方案3】:
在List<T> 上使用ToArray()。
【解决方案4】:
list.ToArray()
会做的。详情请见here。
【解决方案5】:
你可以简单地使用ToArray()扩展方法
例子:
Person p1 = new Person() { Name = "Person 1", Age = 27 };
Person p2 = new Person() { Name = "Person 2", Age = 31 };
List<Person> people = new List<Person> { p1, p2 };
var array = people.ToArray();
According to Docs
使用Array.Copy()复制元素,这是一个O(n)操作,
其中 n 是计数。
【解决方案6】:
一种可能的避免解决方案,它使用多个 CPU 内核并预计运行速度会更快,但它的执行速度却慢了大约 5 倍:
list.AsParallel().ToArray();
【解决方案7】:
使用 HPCsharp nuget 包提供的多个处理器内核将速度提高一倍:
list.ToArrayPar();