我有一些动态列表集合,这是在运行时添加的。我想将那些ListColl转换为对象数组。以下是我的代码
List<double> ListColl = new List<double>();
// This is added dynamically and finally want to convert this list into object array
values.Add(10);
values.Add(40);
values.Add(20);
预期输出就像这样
object[] objArray = new object[] { 10, 40, 20 };
我使用了object[] objArray = ListColl.ToArray()
。但这是错误。
如何将此列表集合转换为对象数组
答案 0 :(得分:10)
您可以使用Cast<object>()
来电ToArray()
:
object[] objArray = ListColl.Cast<object>().ToArray();
答案 1 :(得分:2)
有两种方法可以实现此目的,一种方法casting
另一种方式LINQ
铸造:
object[] objArray = ListColl.Cast<object>().ToArray();
LINQ:
var objArray = (from item in ListColl select item as object).ToArray();
答案 2 :(得分:0)
由于LINQ在引擎盖下使用了IEnumerable,因此有可能通过一次或多次调整目标数组的大小来提供其他一些答案中提供的结果,因为ToArray()方法可能事先不知道有多少元素在列表中。如果这些性能考虑很重要,也许您想编写自己的扩展方法,如下所示:
public static object[] ToObjArray<T>(this List<T> source)
{
var objArray = new object[source.Count];
for (int i = 0; i < source.Count; i++)
objArray[i] = source[i];
return objArray;
}
这将分配一个所需精确大小的数组,并使用对项的常量访问,使列表长度的执行时间呈线性。