Wenn Sie wollen, um einige einfache Validierung und überspringen ungültige Werte (statt eine Ausnahme zu werfen), hier ist etwas, das verwendet TryParse:
string csv ="1,2,3,4,a,5";int mos =0;var intList = csv.Split(',').Select(m =>{int.TryParse(m,out mos);return mos;}).Where(m => m !=0).ToList();//returns a list with integers: 1, 2, 3, 4, 5
EDIT: Hier ist eine aktualisierte Abfrage basierend auf dem feedback von Antoine. Es fordert TryParse ersten heraus zu filtern, sind keine schlechten Werte, und dann Analysieren, um die eigentliche Konvertierung.
string csv ="1,2,3,4,a,5,0,3,r,5";int mos =0;var intList = csv.Split(',').Where(m =>int.TryParse(m,out mos)).Select(m =>int.Parse(m)).ToList();//returns a list with integers: 1, 2, 3, 4, 5, 0, 3, 5
Machte ich eine änderung khalid13 Antwort. Wenn der Benutzer setzen Sie einen string von "0", wäre seine Antwort entfernen, die aus der resultierenden Liste. Ich Tat etwas ähnlich, aber verwendet ein anonymes Objekt.
var result = commaSeparatedString.Split(newchar[]{','},StringSplitOptions.RemoveEmptyEntries).Select(s =>new{ didConvert =int.TryParse(s.TrimNullProtection(),out convertedInt), convertedValue = convertedInt }).Where(w => w.didConvert).Select(s => s.convertedValue).ToList();
TrimNullProtection ist eine benutzerdefinierte Funktion, die ich machte, die Sie schützt, wenn der string null ist.
Was das obige nicht ist ausziehen alle Zeichenfolgen, die nicht in der Lage waren umgewandelt werden, ohne einen Fehler. Wenn Sie brauchen, um Fehler, wenn es ein problem mit der Umstellung, dann ist die akzeptierte Antwort sollte den trick tun.
Ich stolperte über dieses, und ich möchte nur meine eigene Lösung ohne linq. Dies ist eine primitive Ansatz. Nicht-integer Werte werden nicht in die Liste auch.
List<int>TagIds=newList<int>();string[] split = tags.Split(',');foreach(string item in split){int val =0;if(int.TryParse(item,out val)==true){TagIds.Add(val);}}
Hier ist ein Weg, es zu tun:
InformationsquelleAutor der Antwort dasblinkenlight
Können Sie LINQ-w/
int.Parse()
zu konvertieren, diestring[]
zu einemIEnumerable<int>
und übergeben Sie das Ergebnis an denList<T>
Konstruktor:InformationsquelleAutor der Antwort Justin Niessner
Wenn Sie wollen, um einige einfache Validierung und überspringen ungültige Werte (statt eine Ausnahme zu werfen), hier ist etwas, das verwendet TryParse:
EDIT: Hier ist eine aktualisierte Abfrage basierend auf dem feedback von Antoine. Es fordert TryParse ersten heraus zu filtern, sind keine schlechten Werte, und dann Analysieren, um die eigentliche Konvertierung.
InformationsquelleAutor der Antwort khalid13
Ein wenig LINQ geht ein langer Weg:
InformationsquelleAutor der Antwort Henk Holterman
Ohne LINQ-Abfrage verwenden , können Sie diese Methode wählen ,
dann können Sie konvertieren Sie die Liste in der integer-Typ...
InformationsquelleAutor der Antwort Manish Jain
InformationsquelleAutor der Antwort Oybek
InformationsquelleAutor der Antwort LiquidPony
Wenn Sie mit C# 3.5, die Sie verwenden können, Linq um dies zu erreichen
oder die kurze
InformationsquelleAutor der Antwort Agustin Meriles
Machte ich eine änderung khalid13 Antwort. Wenn der Benutzer setzen Sie einen string von "0", wäre seine Antwort entfernen, die aus der resultierenden Liste. Ich Tat etwas ähnlich, aber verwendet ein anonymes Objekt.
TrimNullProtection ist eine benutzerdefinierte Funktion, die ich machte, die Sie schützt, wenn der string null ist.
Was das obige nicht ist ausziehen alle Zeichenfolgen, die nicht in der Lage waren umgewandelt werden, ohne einen Fehler. Wenn Sie brauchen, um Fehler, wenn es ein problem mit der Umstellung, dann ist die akzeptierte Antwort sollte den trick tun.
InformationsquelleAutor der Antwort SolidSnake4444
Ich stolperte über dieses, und ich möchte nur meine eigene Lösung ohne linq. Dies ist eine primitive Ansatz. Nicht-integer Werte werden nicht in die Liste auch.
Hoffe, das hilft.
InformationsquelleAutor der Antwort drchanix