铸造了IEnumerable 到IEnumerable的失败
问题描述:
可能重复:
Puzzling Enumerable.Cast InvalidCastException铸造了IEnumerable <int>到IEnumerable的<long>失败
为什么
List<long> numbers = Enumerable.Range(1, 9999).Cast<long>().ToList();
失败,一个InvalidCastException?
答
看到这个答案:Puzzling Enumerable.Cast InvalidCastException
综上所述,CAST()作用于非通用IEnumerable的,这箱,每箱诠释为对象。所以,当Cast被调用时,它只能将元素视为类型为Object的元素,而不能将元素强制转换为long。
的解决方案是使用选择要执行的明确的转换:
var numbers = Enumerable.Range(1,9999).Select(i=>(long)i).ToList();
[迷宫Enumerable.Cast InvalidCastException的](的重复http://stackoverflow.com/questions/445471/puzzling-enumerable-cast- invalidcastexception) – jason 2010-12-13 21:30:57
这是我以前问过的[question](http://stackoverflow.com/questions/445471/puzzling-enumerable-cast-invalidcastexception)的副本。 – jason 2010-12-13 21:31:17