我有一个ArrayList类型的BookingData到List<BookingData>?
我正在使用.net 2.0所以我不能使用arrayList.Cast<int>().ToList(),我不想在这里做foreach循环,你有更好的想法吗?
谢谢.
Ani*_*Ani 11
做注意到的东西将不得不枚举数组列表构建List<T>; 它只是你自己做或将其留给其他(框架/实用程序)方法的问题.
如果这是一次性的,您希望避免的解决方案(使用"就地" foreach循环进行转换)是一个非常合理的选择.如果您发现自己经常这样做,您可以将其提取到通用实用程序方法中,如cdhowie的答案.
如果您的限制仅限于您必须以 .NET 2.0为目标(但可以使用C#3),请考虑LINQBridge,它是LINQ to Objects for .NET 2.0的重新实现.这样您就可以使用Cast您提供的样本而无需更改.它也适用于C#2,但是你不会从扩展方法语法,更好的类型推断等方面获益.
如果你不关心性能,也不想去编写实用程序方法的麻烦,你可以使用内置ArrayList.ToArray方法来帮助,通过创建一个兼容的中间数组List<T>(这不是所有比foreach短的东西):
ArrayList arrayList = ...
// Create intermediary array
BookingData[] array = (BookingData[]) arrayList.ToArray(typeof(BookingData));
// Create the List<T> using the constructor that takes an IEnumerable<T>
List<BookingData> list = new List<BookingData>(array);
Run Code Online (Sandbox Code Playgroud)
最后,我建议,如果可能的话,完全放弃使用过时的非泛型集合类.