是否可以投射IEnumerable<IEnumerable<T>> to List<List<T>>
?如果我这样做,我将收到无效的强制转换异常。
由于
答案 0 :(得分:9)
从集合到列表的简单转换使用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>>
类型。
答案 1 :(得分:2)
您无法强制转换,必须使用ToList()
将IEnumerable<T>
转换为List<T>
:
IEnumerable<IEnumerable<T>> input;
var result = input
.Select(i => i.ToList())
.ToList();
答案 2 :(得分:0)
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
的过时调用。