所以我目前正在用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',但仍然无法解决问题,这是显示给我的图像:
所以我目前正在用C#学习LINQ,我正在尝试这种Cast <>扩展方法,但实际上似乎无法解决。当我尝试遍历IEnumerable
Cast不适用于值类型转换,您无法通过使用Cast将字符串转换为int,此方法用于转换某些未实现IEnumerable的数组类型,例如数组列表。这样就不能将LINQ与ArrayList一起使用。如果要使用LINQ语法查询ArrayList,可以使用Cast将ArrayList转换为Enumerable,然后可以使用LINQ查询。请参考official document
您应该改用int.TryParse
。因此,您可以通过以下方式实现强制转换: