我从文本文档中读取了一个数字列表并将其保存在List<String>
中,我试图将这些数字转换为List<int>
。数字用空格分隔。这是我尝试的,假设Numbers是字符串列表:
List<int> AllNumbers = Numbers.ConvertAll<int>(Convert.ToInt32);
当我尝试使用时,说“输入字符串的格式不正确。”
将List<String>
转换为List<int>
的正确方法是什么?
示例:
string numbers = File.ReadAllText("numbers.txt");
string[] allNumbers = numbers.Split(new char[] { ' ', '\t', '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);
List<string> List = new List<string>();
List.AddRange(allNumbers);
然后我想将List allNumbers转换为整数List。
文本文件如下所示:
10 12 01 03 22 ....等等
答案 0 :(得分:5)
看起来你的数字是用空格分隔的单个字符串,如果可以的话你可以使用Linq:
List<int> allNumbers = numbers.Split(' ').Select(int.Parse).ToList();
如果您确实拥有List<string>
个号码,那么:
List<int> allNumbers = numbers.Select(int.Parse).ToList();
或者最后,如果每个字符串可能包含多个以空格分隔的数字:
List<int> allNumbers = numbers.SelectMany(x=> x.Split(' ')).Select(int.Parse).ToList();
答案 1 :(得分:1)
假设列表中的每个字符串都包含一个或多个以空格分隔的整数,您可以尝试这种方法:
var res = listOfNumbers
.SelectMany(numStr => numStr.Split(' ').Select(s => int.Parse(s)))
.ToList();
您可以在最后一次选择中使用方法组而不是lambda:Select(int.Parse)