C# 如何将IEnumerable强制转换为List

C# 如何将IEnumerable强制转换为List,c#,list,ienumerable,C#,List,Ienumerable,是否可以将IEnumerable强制转换为List?如果我这样做,就会得到一个无效的强制转换异常 谢谢您不能强制转换,您必须使用ToList将IEnumerable转换为List: 不能强制转换,必须使用ToList将IEnumerable转换为List: 从集合到列表的简单转换正在使用该方法。对于示例: var list = collection.ToList(); 您可以使用Linq获取此结构中的所有列表,例如: var list = collection.ToList(); 首先导入名

是否可以将IEnumerable强制转换为List?如果我这样做,就会得到一个无效的强制转换异常


谢谢

您不能强制转换,您必须使用ToList将IEnumerable转换为List:


不能强制转换,必须使用ToList将IEnumerable转换为List:


从集合到列表的简单转换正在使用该方法。对于示例:

var list = collection.ToList();
您可以使用Linq获取此结构中的所有列表,例如:

var list = collection.ToList();
首先导入名称空间以使用Linq

using System.Linq;
试试这个:

var list = collection.Select(c => c.ToList()) // convert each collection in a list
                     .Tolist(); //last ToList to get all conversions in a single list

列表对象将是列表类型。

从集合到列表的简单转换正在使用该方法。对于示例:

var list = collection.ToList();
您可以使用Linq获取此结构中的所有列表,例如:

var list = collection.ToList();
首先导入名称空间以使用Linq

using System.Linq;
试试这个:

var list = collection.Select(c => c.ToList()) // convert each collection in a list
                     .Tolist(); //last ToList to get all conversions in a single list

列表对象将是列表类型。

Resharper给出了一个很好的建议:

var castedList = (myEnum is List<List<T>>) ? 
    (List<List<T>>) myEnum : 
    myEnum.Select(x => (x is List<T>) ? x as List<T>: x.ToList())

如果枚举已经是列表,这将删除对ToList的过时调用。

Resharper给出了一个很好的建议:

var castedList = (myEnum is List<List<T>>) ? 
    (List<List<T>>) myEnum : 
    myEnum.Select(x => (x is List<T>) ? x as List<T>: x.ToList())

如果枚举已经是列表,这将删除对ToList的过时调用。

那么您尝试了MyEnumerable.ToList?那么您尝试了MyEnumerable.ToList?现在,如果您有一个列表,您不会像有一个IEnumerable一样做同样的事情。在第一种情况下,返回对列表的引用,而在第二种情况下创建新列表。仅执行myEnum.Selectx=>x.ToList.ToList将创建所有内容的新副本。@RuneGrimstad据我所知,我们不需要新列表,如果列表中的枚举已经是列表,我们可以对它们进行新引用,为什么要创建新列表?我同意。我的观点是这两条路会做不同的事情。在一种情况下,你会得到引用,而在另一种情况下,你会得到新的列表。如果你有一个列表,你不会做与你有一个IEnumerable时相同的事情。在第一种情况下,返回对列表的引用,而在第二种情况下创建新列表。仅执行myEnum.Selectx=>x.ToList.ToList将创建所有内容的新副本。@RuneGrimstad据我所知,我们不需要新列表,如果列表中的枚举已经是列表,我们可以对它们进行新引用,为什么要创建新列表?我同意。我的观点是这两条路会做不同的事情。在一种情况下,你得到了引用,而在另一种情况下,你得到了新的列表。这是正确的,应该这样标记。这是正确的,应该这样标记。