2017-03-16 8 views
2

Ich versuche, eine Liste von String-Arrays auf eine Liste von int-Arrays zu werfen. Ich habe folgendes versucht:Wie konvertiert man die Liste <String[]> in die Liste <int[]>?

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

Lesen Sie eine Liste von String-Array zurück: List<String[]> dataset

+3

Sie können nicht ** ** Guss String in einen int, können Sie ** convert (Parsing) ** es. –

+1

eine einfache Schleife könnte leichter zu verstehen und zu debuggen – Vland

+0

Das ist was ich meinte, sorry. – Aevitus

Antwort

3

Sie können .ToList<T>() verwenden .Select() Ergebnis zu konvertieren (die IEnumerable<int[]> ist) auf eine Liste.
Auf diese Weise wenden Sie int.Parse auf jedes Elementarray an und konvertieren das Ergebnis in Liste.
Auch, um Code Homogenität zu schaffen, können Sie LINQ verwenden Select und ToArray statt Array.ConvertAll:

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

Eine kleine Korrektur: Sie müssen nicht werfen String in einen int, Sie convert/parsen es.

+0

Danke, das ist, was ich versucht habe zu tun! – Aevitus

+0

@TimSchmelter Nicht sicher, ob ich verstehe, was du meinst :) Warum ist es nicht gültig? Wer benutzt es? –

0

Sie können so etwas wie dies versuchen:

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(); 
Verwandte Themen