将genericsienumerable转换为arraylist

我需要将linq查询从genericsienumerable转换为arraylist。

ArrayList myArrayList = new ArrayList(); var b = (from myObj in myCollection select new myClass { Name = myObj.Name, ac = myObj.ac }); 

我试过了

 b.Cast(); 

但它不起作用。

编辑:我使用@devdigital解决方案

但我还想指出,同时我找到了一个hackish解决方案。

 myArrayList.InsertRange(0, b.ToArray()); 

ArrayList类型的构造函数之一采用ICollection ,因此您应该能够执行以下操作:

 var b = (from myObj in myCollection select new myClass { Name = myObj.Name, ac = myObj.ac }).ToArray(); ArrayList myArrayList = new ArrayList(b); 

我建议你使用List而不是ArrayList 。 您实际上可以使用ToList扩展方法或List的构造函数来获取IEnumerable

 var myList = b.ToList(); // either var myListTwo = new List(b); // or 

List是.NET 2.0新引入的,是通用的。 这意味着它会在编译时产生实际类型的值,即myClass ,而不是object

编辑:如果你确实需要一个ArrayList ,你需要复制b两次,因为它不能直接处理IEnumerable ,正如devdigital在他的回复中所指出的 :

 ArrayList arrayList = new ArrayList(b.ToArray()); 

您可以使用ToArray()IEnumerable转换为数组,然后从该数组构造一个ArrayList

 var b = (from myObj in myCollection select new myClass { Name = myObj.Name, ac = myObj.ac }); var myArrayList = new ArrayList(b.ToArray()); 
 ArrayList arrayList = new ArrayList(b.ToList());