将List <string>转换为List <int> </int> </string>

时间:2012-03-05 03:37:36

标签: c# list

我从文本文档中读取了一个数字列表并将其保存在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 ....等等

2 个答案:

答案 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)