2017-03-16 146 views
2

我想将字符串数组列表转换为int数组列表。我曾尝试以下:如何转换List <String[]>至List <int[]>?

List<int[]> dataset = Read(fileName, separator).Select(
    line => Array.ConvertAll(line, s => int.Parse(s) 
); 

读返回字符串数组列表:List<String[]> dataset

+3

你不能** **投字符串为int,你可以**转换(解析)**它。 –

+1

一个简单的循环可能更容易理解和调试 – Vland

+0

那就是我的意思,对不起。 – Aevitus

回答

3

您可以使用.ToList<T>()转换.Select()结果(这是IEnumerable<int[]>)到列表中。
这样,您将int.Parse应用于项目数组的每个项目,并将结果转换为List。
此外,为了提供代码同质化,你可以使用LINQ SelectToArray代替Array.ConvertAll

List<string[]> stringArrayList = ...; 
List<int[]> intArrayList = stringArrayList 
    .Select(stringArray => stringArray.Select(int.Parse).ToArray()) 
    .ToList(); 

一个小纠正:你不字符串为int,你转换/解析它。

+0

谢谢,这就是我正在尝试做的! – Aevitus

+0

@TimSchmelter不知道我是否明白你的意思:)为什么它不是有效的?谁使用它? –

0

你可以尝试这样的事情:

List<int[]> Listintegers = yourList 
    .Select(y => y.Select(x => int.Parse(x)).ToArray()) 
    .ToList(); 
0
List<string[]> source = new List<string[]> 
{ 
    new string[2] { "2", "3" }, 
    new string[4] { "4", "5", "6", "7" }, 
    new string[1] { "1" } 
}; 

List<int[]> result = source.Select(array => Array.ConvertAll(array, item => int.Parse(item))).ToList(); 
相关问题