这个问题在这里已经有了答案:
10年前关闭。
为什么
List<long> numbers = Enumerable.Range(1, 9999).Cast<long>().ToList();
因 InvalidCastException 而失败?
最佳答案
看到这个答案:Puzzling Enumerable.Cast InvalidCastException
总之,Cast() 适用于非泛型 IEnumerable,它将每个 int 装箱为一个对象。因此,在调用 Cast 时,它只能将元素视为 Object 类型,而不能将其强制转换为 long。
解决方案是使用 Select 执行显式转换:
var numbers = Enumerable.Range(1,9999).Select(i=>(long)i).ToList();
关于c# - 将 IEnumerable<int> 转换为 IEnumerable<long> 失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4433648/