将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;