2017-11-02 1 views
-4

ich habe:Cast IEnumerable <string> zu IEnumerable <int> in C#

IEnumerable<string> c = codigo_incidencia.Split('#'); 

ich brauche "c" zu werfen ein IEnumerable<int> zu sein. Ich weiß nicht, wie man diese Besetzung in C# macht.

Kann mir jemand helfen?

+2

Sie alles versucht haben? –

+0

Ich würde das nicht * casten *, ich würde eher '.Select()' für den zurückgegebenen Wert von '.Split()' aufrufen und den String innerhalb des '.Select()' analysieren. – David

+0

Das ist keine Besetzung, sondern eine Konvertierung. Natürlich könnte dies nur passieren, wenn Ihr IEnumerable in ein IEnumerable konvertiert werden könnte. Was ist der Inhalt von _codigo_incidencia_? – Steve

Antwort

3

Kürzester Weg zur Verwendung von Linq ist .Select ebenfalls:

var c = codigo_incidencia.Split('#').Select(int.Parse); 

Wenn Sie nicht sicher sind, ob die Abschnitte gültige Ints sind, dann sollten Sie eineverwendenwie in: Select parsed int, if string was parseable to int. Und wenn die Arbeit mit C 7.0 # Sie this answer der Frage aussehen:

var result = codigo_incidencia.Split('#') 
       .Select(s => new { Success = int.TryParse(s, out var value), value }) 
       .Where(pair => pair.Success) 
       .Select(pair => pair.value); 
4

Verwendung LINQ:

IEnumerable<int> c = codigo_incidencia.Split('#').Select(x => int.Parse(x)); 
2

Sie können es so machen, wenn die Saiten immer Zahlen garantiert sein:

IEnumerable<int> c = codigo_incidencia.Split('#').Select(stringValue => int.Parse(stringValue)); 
Verwandte Themen