将IEnumerable <T>转换为List <T>

RCI*_*CIX 32 c# ienumerable list

我想知道是否可以将IEnumerable转换为List.除了将每个项目复制到列表中之外,还有什么方法可以做到吗?

dmn*_*mnd 39

如前所述,使用yourEnumerable.ToList().它通过您枚举IEnumerable,将内容存储在新的内容中List.您不一定要复制现有列表,因为您IEnumerable可能会懒惰地生成元素.

这正是其他答案所暗示的,但更清晰.这是反汇编,所以你可以肯定:

public static List<TSource> ToList<TSource>(this IEnumerable<TSource> source)
{
    if (source == null)
    {
        throw Error.ArgumentNull("source");
    }
    return new List<TSource>(source);
}
Run Code Online (Sandbox Code Playgroud)


Joh*_*ell 34

//使用System.Linq;

使用.ToList()方法.在System.Linq命名空间中找到.

var yourList = yourEnumerable.ToList();
Run Code Online (Sandbox Code Playgroud)

https://docs.microsoft.com/en-us/dotnet/api/system.linq?view=netcore-2.2

  • 如果使用System.Linq不可用,则缺少:).这应该完全是公认的答案...... (3认同)

Daw*_*žan 7

正如其他人建议的那样,只需ToList()在可枚举对象上使用该方法:

var myList = myEnumerable.ToList()
Run Code Online (Sandbox Code Playgroud)

但是,如果您的IEnumerable对象没有该ToList()方法,并且您收到如下错误:

'IEnumerable'不包含'ToList'的定义

你可能错过了System.Linq命名空间,所以只需添加它:

using System.Linq
Run Code Online (Sandbox Code Playgroud)