J'ai cette chaîne:Convertir une chaîne dans une liste <int> LINQ (de façon plus propre)
string input = "1,2,3,4,s,6";
Faites attention au caractère s
.
Je veux juste convertir cette chaîne dans un List<int>
utilisant LINQ. J'ai d'abord essayé de cette façon:
var myList = new List<int>();
input.Split(',').ToList().ForEach(n =>
myList.Add(int.TryParse(n, out int num) ? num : -1)
);
lista.RemoveAll(e => e == -1);
Mais je préfère ne pas avoir de -1
au lieu d'un caractère non-numéro.
Alors maintenant, j'essayer avec ceci:
var myList = new List<int>();
input.Split(',').ToList()
.FindAll(n => int.TryParse(n, out int _))
.ForEach(num => myList.Add(int.Parse(num)));
Je préfère, mais est vraiment dommage que l'analyse syntaxique qui se passe deux fois (TryParse
au début, puis Parse
). Mais, d'après ce que je comprends, la variable out dans TryParse est inutile (ou pas?).
D'autres vous suggère (utilisant LINQ)?
https://stackoverflow.com/questions/1297231/convert-string-to-int-in-one -line-of-code-using-linq/37033140 # 37033140 – Slai