当尝试通过IEnumerable 在C#中进行迭代时,指定的转换无效]

问题描述 投票:0回答:2

所以我目前正在用C#学习LINQ,我正在尝试这种Cast<>扩展方法,但实际上似乎无法解决。当我尝试遍历IEnumerable<int>值时,它不起作用,它给我错误:

System.InvalidCastException(“指定的转换无效”)。

这是代码:(我也尝试过使用ToArray()将'result'变量转换为数组,但是无论我尝试了什么,它仍然不起作用)

List<string> strings = new List<string>(){ "1", "2", "3", "4", "5", "6", "7", "8", "9", "10 };
IEnumerable<int> result = strings.Cast<int>();

foreach(int number in result){
    Console.WriteLine(number);
}

Console.ReadKey();

当尝试遍历IEnumerable结果变量时,我也尝试使用'var'而不是'int',但仍然无法解决问题,这是显示给我的图像:

enter image description here

所以我目前正在用C#学习LINQ,我正在尝试这种Cast <>扩展方法,但实际上似乎无法解决。当我尝试遍历IEnumerable 值时,它...

c# linq casting iteration ienumerable
2个回答
0
投票

Cast不适用于值类型转换,您无法通过使用Cast将字符串转换为int,此方法用于转换某些未实现IEnumerable的数组类型,例如数组列表。这样就不能将LINQ与ArrayList一起使用。如果要使用LINQ语法查询ArrayList,可以使用Cast将ArrayList转换为Enumerable,然后可以使用LINQ查询。请参考official document


0
投票

您应该改用int.TryParse。因此,您可以通过以下方式实现强制转换:

© www.soinside.com 2019 - 2024. All rights reserved.