无法将字符串转换为List <int> </int>

时间:2014-03-20 10:28:33

标签: c#

我有一个看起来像“34,45,74,23”的字符串并且是动态生成的。如何将其转换为List?

var y = numString();
y.ToList();

4 个答案:

答案 0 :(得分:5)

这应该会给你一个List<int>

str.Split(',').Select(int.Parse).ToList();

如果您不确定所有字符串是否可以解析为int,或者您的字符串包含多个逗号(如23,,24,25)或无效的字符,您可以先使用Where过滤序列:< / p>

var numbers = str.Split(',').Where(x => x.All(char.IsDigit)).Select(int.Parse);

或者您可以使用TryParse

var numbers = str.Split(',').Select(x =>
        {
            int result;
            if (int.TryParse(x, out result)) return result;
            return int.MinValue;
        }).Where(x => x != int.MinValue).ToList();

可能TryParse是最佳选择,因为char.IsDigit会为所有数字返回true,而不只是(0-9)

答案 1 :(得分:2)

使用Linq:

var numbers = y.Split(',').Select(num => int.Parse(num)).ToList();

答案 2 :(得分:1)

这应该为你做

string source = "34,45,74,23";
var stringArray = source.Split(',');
var intArray = stringArray.Select(x => Convert.ToInt32(x)).ToList();

答案 3 :(得分:1)

如果您确定该格式有效,则可以使用Array.ConvertAll和效率更高的List<T> constructor

string[] numbers = "34,45,74,23".Split(',');
var list = new List<int>(Array.ConvertAll(numbers, int.Parse));