将IEnumerable<int>转换为IEnumerable<long>失败

3

这是我之前提出的一个问题的副本。 - jason
1个回答

15
请参考这个答案:Puzzling Enumerable.Cast InvalidCastException 简而言之,Cast() 方法适用于非泛型的 IEnumerable,它将每个 int 封装为 Object。因此,当调用 Cast 时,它只能将元素视为 Object 类型,而无法转换为 long。
解决方法是使用 Select 来对每个强类型元素进行显式转换:
var numbers = Enumerable.Range(1,9999).Select(i=>(long)i).ToList();

所以.cast<>()通常不能用于原始类型。这是一个很好的见解。我会进一步创建一个扩展方法来处理这种情况。干杯。 - XDS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接