将IEnumerable 转换为List
我想知道是否可以将IEnumerable转换为List。 除了将每个项目复制到列表中之外,还有什么办法吗?
如前所述,使用yourEnumerable.ToList()
。 它通过您的IEnumerable
枚举,将内容存储在新的List
。 您不一定要复制现有列表,因为您的IEnumerable
可能会懒惰地生成元素。
这正是其他答案所暗示的,但更清晰。 这是反汇编,所以你可以肯定:
public static List ToList (this IEnumerable source) { if (source == null) { throw Error.ArgumentNull("source"); } return new List (source); }
使用.ToList()方法。
yourEnumerable.ToList();
正如其他人建议的那样,只需对可枚举对象使用ToList()
方法:
var myList = myEnumerable.ToList()
但是,如果您的IEnumerable
对象没有ToList()
方法,并且您收到如下错误:
‘IEnumerable’不包含’ToList’的定义
您可能缺少System.Linq
命名空间,因此只需添加它:
using System.Linq
创建一个新List并将旧的IEnumerable传递给它的初始化器:
IEnumerable enumerable = GetIEnumerable(); List list = new List (enumerable);
不,您应该复制,如果您确定该引用是对列表的引用,您可以像这样转换
List intsList = enumIntList as List ;