2011-09-19 12 views
14

Jak mogę przekonwertować tablicę łańcuchów na listę int? (nie konwertując ich jedna po drugiej za pomocą mojej własnej metody)Jak mogę przekonwertować ciąg [] na listę <int>?

Z wyszukiwania w Google Widziałem metody o nazwie ToList() i ConvetAll(), ale nie mogłem ich napisać, dlaczego tak jest?

Co Próbowałem to:

new list<int>((int[])s.Split(','));

i dostaję komunikat, że nie mogę przekonwertować ciąg [] int [] :(

+0

Jak wyglądają twoje struny? – Gabe

+0

tylko liczby (int) –

+0

Możliwy duplikat [Podziel ciąg, przekonwertuj ToList () w jednej linii] (https://stackoverflow.com/questions/911717/split-string-convert-tolistint-in-one-line) –

Odpowiedz

32

Jest to proces dwuetapowy zaangażowany . pierwszym z nich jest tutaj do konwersji ciągów do liczby całkowitej, a następnie przekonwertować tablicę do listy Jeśli można użyć LINQ, najprostszym sposobem jest użycie.

stringArray.Select(x => Int32.Parse(x)).ToList(); 
+9

lub krótszy: 'stringArray.Select (Int32.Parse) .ToList();' – BrokenGlass

+0

W przypadku, gdy ktokolwiek chce włączyć opcję 'TryParse', aby zapobiec wyjątkom: 'int i; Lista intList = stringArray.Split (","). Wybierz (s => int.TryParse (s, out i)? I: -1) .ToList(); ' –

0

Assumi ng values jest lista ciągów:

int[] ints = new int[values.Count]; 

int counter = 0; 
foreach (string s in values) { 
    ints[counter++] = int.Parse(s); 
} 

Nie overcomplicate siebie :)

11

Pierwsze podpowiedź z Twojego kodu:

var listOfInts = s.Split(',').Select(Int32.Parse).ToList(); 
0
var s = "1,2,3,4,5,6,7,8,9"; 
var result = s.Split(',').Select(Convert.ToInt32).ToList(); 
0

spróbuj

int x = 0; 

var intList= stringList.Where(str => int.TryParse(str, out x)).Select(str => x).ToList(); 
Powiązane problemy