linq 在C#中尝试通过IEEE802.0进行转换时,指定的转换无效< int>

r1zk6ea1  于 2023-10-13  发布在  C#
关注(0)|答案(2)|浏览(169)

所以我目前正在学习C#中的LINQ,我正在尝试这个Cast<>扩展方法,它似乎并不真正有效。当我尝试遍历IEnumerable<int>值时,它不起作用,它给了我错误:
System.InvalidCastException(“指定的强制转换无效”)。
这是代码:(我也尝试过将“result”变量转换为ToArray()数组,但无论我怎么尝试,它仍然不起作用)

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();

我也试过使用'var'而不是'int'当试图通过IEEEresultvariable,但它仍然不工作,这里是它向我展示的图像:

oxosxuxt

oxosxuxt1#

你应该使用int.TryParse。所以你可以这样实现强制转换:

strings
    .Select(x => int.TryParse(x, out var result) ? result : 0)
    .ToArray()

strings
    .Select(x => int.TryParse(x, out var result) ? result : throw new InvalidCastException(message: ""))
    .ToArray()
mrphzbgm

mrphzbgm2#

Cast不是用于值类型的转换,你不能使用Cast将string转换为int,这个方法用于转换一些没有实现IELTS的数组类型,例如。这样你就不能将LINQ和ArrayList一起使用。如果你想用LINQ语法查询ArrayList,你可以使用Cast将ArrayList转换为Escort,然后LINQ查询就可用了。请参阅official document

相关问题