LINQ使用字符串上的Select返回奇怪的值

use*_*107 3 c# linq

此代码返回int 49

IEnumerable<int> numbersList = numbers.Select(x => Convert.ToInt32(x));

int sum = numbersList.Sum();
Run Code Online (Sandbox Code Playgroud)

numbers变量是一个值为1的字符串.

如果我使用

numbers.Split(',').Select(x => Convert.ToInt32(x));
Run Code Online (Sandbox Code Playgroud)

然后我得到了正确的答案.我知道split传回一个字符串数组所以我使用了一个单值为1的字符串数组而不是分裂,这也是有用的.

string[] sa = new string[] { "1" }
Run Code Online (Sandbox Code Playgroud)

我的问题是有谁知道为什么使用字符串上的选择返回错误的值?

谢谢.

Guf*_*ffa 8

使用numbers.Select()时将字符串视为集合.它是一个集合,但不是子串的集合,而是一组字符.

你得到的结果就像numbers是一个字符数组,即{ '1' }.

结果Convert.ToInt32('1')是字符代码为'1'49.