Answers:
您正在使用哪个版本的.NET?如果是.NET 3.5,我会打电话给ToArray()
它并完成它。
如果只有非通用IEnumerable,请执行以下操作:
IEnumerable query = ...;
MyEntityType[] array = query.Cast<MyEntityType>().ToArray();
如果您不知道该方法中的类型,但是该方法的调用者确实知道该类型,请将该方法设为通用并尝试以下操作:
public static void T[] PerformQuery<T>()
{
IEnumerable query = ...;
T[] array = query.Cast<T>().ToArray();
return array;
}
object[]
公正使用Cast<object>
。非泛型IEnumerable
没有ToArray
扩展方法,因此您不能只调用foo.ToArray<object>
或类似方法。
ToArray
扩展方法位于System.Linq
名称空间中,以为您可能知道:)。
将以下内容放入您的.cs文件:
using System.Linq;
然后,您将可以使用System.Linq.Enumerable中的以下扩展方法:
public static TSource[] ToArray<TSource>(this System.Collections.Generic.IEnumerable<TSource> source)
即
IEnumerable<object> query = ...;
object[] bob = query.ToArray();
我想重新发明轮子...
public static T[] ConvertToArray<T>(this IEnumerable<T> enumerable)
{
if (enumerable == null)
throw new ArgumentNullException("enumerable");
return enumerable as T[] ?? enumerable.ToArray();
}
ToArray()
(通过内部Buffer
类)到调用的步骤中……尽管有人期望“标准”复制行为,他们会很惊讶。
IEnumerable.ToArray()