如何铸造IEnumerable<;IEnumerable<;T>>;到列表<;列表<;T>&

本文关键字:lt gt 列表 IEnumerable 何铸造 | 更新日期: 2023-09-27 18:29:26

是否可以铸造IEnumerable<IEnumerable<T>> to List<List<T>>?如果我这样做的话,我会得到一个无效的强制转换异常。

感谢

如何铸造IEnumerable<;IEnumerable<;T>>;到列表<;列表<;T>&

从集合到列表的简单强制转换使用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的过时调用。