Array arr = new string[] {"tiger", "lion", "cat"};; IEnumerable<string> enumableArr = arr as IEnumerable<string>; IEnumerable<string> query = from item in enumableArr select item; foreach(var str in query) Console.WriteLine(str);
但要注意,因为是运行时赋予的,所以以下代码不能通过编译(因为LinQ需要一个实现了IEnumerable<T>的对象:
Array arr = new string[] {"tiger", "lion", "cat"};; IEnumerable<string> query = from item in arr select item; foreach (var str in query) Console.WriteLine(str);
这个是MSDN的解释:
Array 类是支持数组的语言实现的基类。但是,只有系统和编译器能够从 Array 类显式派生。用户应当使用由语言提供的数组构造。
一个元素就是 Array 中的一个值。Array 的长度是它可包含的元素总数。Array 的秩是 Array 中的维数。Array 中维度的下限是 Array 中该维度的起始索引,多维 Array 的各个维度可以有不同的界限。
重要事项: |
---|
在 .NET Framework 2.0 版中,Array 类实现 System.Collections.Generic.IList、System.Collections.Generic.ICollection 和 System.Collections.Generic.IEnumerable 泛型接口。由于实现是在运行时提供给数组的,因而对于文档生成工具不可见。因此,泛型接口不会出现在 Array 类的声明语法中,也不会有关于只能通过将数组强制转换为泛型接口类型(显式接口实现)才可访问的接口成员的参考主题。将某一数组强制转换为这三种接口之一时需要注意的关键一点是,添加、插入或移除元素的成员会引发 NotSupportedException。 |
http://msdn.microsoft.com/zh-cn/library/system.array(VS.80).aspx