【发布时间】:2016-01-08 11:57:56
【问题描述】:
可以投IEnumerable<IEnumerable<T>> to List<List<T>>吗?如果我这样做,我会得到一个无效的强制转换异常。
谢谢
【问题讨论】:
-
所以你尝试过 MyEnumerable.ToList()?
标签: c# list ienumerable
可以投IEnumerable<IEnumerable<T>> to List<List<T>>吗?如果我这样做,我会得到一个无效的强制转换异常。
谢谢
【问题讨论】:
标签: c# list ienumerable
从集合到列表的简单转换使用ToList() 方法。示例:
var list = collection.ToList();
您可以使用 Linq 获取此结构中的所有列表,例如:
首先导入命名空间以使用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
list 对象将是 List<List<T>> 类型。
【讨论】:
不能强制转换,必须使用ToList() 将IEnumerable<T> 转换为List<T>:
IEnumerable<IEnumerable<T>> input;
var result = input
.Select(i => i.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 的过时调用。
【讨论】: