string tags = "9,3,12,43,2"
List<int> TagIds = tags.Split(',');
Cela ne fonctionne pas car la méthode split renvoie une chaîne []
S'il vous plaît aider.
Voici une façon de le faire:
List<int> TagIds = tags.Split(',').Select(int.Parse).ToList();
Si vous souhaitez inclure une validation simple et ignorer les valeurs non valides (au lieu de déclencher une exception), voici quelque chose qui utilise 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: Voici une requête mise à jour basée sur les commentaires d'Antoine. TryParse est d'abord appelé pour filtrer les valeurs incorrectes, puis Parse pour effectuer la conversion.
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
Vous pouvez utiliser LINQ w/int.Parse()
pour convertir le string[]
en IEnumerable<int>
, puis transmettre ce résultat au constructeur List<T>
:
var tagIds = new List<int>(tags.Split(',').Select(s => int.Parse(s)));
Un petit LINQ va un long chemin:
List<int> TagIds = tags.Split(',')
.Select(t => int.Parse(t))
.ToList();
Sans requête LINQ, vous pouvez choisir cette méthode,
string tags = "9,3,12,43,2";
List<string> numbers = nos.Split(',').ToList<string>();
et alors vous pouvez convertir cette liste en type entier ...
string tags = "9,3,12,43,2"
List<int> TagIds = tags.Split(',').Select(x => x.Trim()).Select(x=> Int32.Parse(x)).ToList();
Si vous utilisez C # 3.5, vous pouvez utiliser Linq pour y parvenir.
string tags = "9,3,12,43,2";
List<int> tagIds = tags.Split(',').Select(s=>int.Parse(s)).ToList();
ou le court
string tags = "9,3,12,43,2";
List<int> tagIds = tags.Split(',').Select(int.Parse).ToList();
string tags = "9,3,12,43,2";
List<int> TagIds = tags.Split(',').Select(int.Parse).ToList();
Je suis tombé sur cela et je veux juste partager ma propre solution sans linq. C'est une approche primitive. Les valeurs non entières ne seront pas ajoutées à la liste également.
List<int> TagIds = new List<int>();
string[] split = tags.Split(',');
foreach (string item in split)
{
int val = 0;
if (int.TryParse(item, out val) == true)
{
TagIds.Add(val);
}
}
J'espère que cela t'aides.
J'ai modifié la réponse de khalid13. Si l'utilisateur met une chaîne de "0", sa réponse l'enlèvera de la liste résultante. J'ai fait quelque chose de similaire mais j'ai utilisé un objet anonyme.
var result = commaSeparatedString.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)
.Select(s => new { didConvert = int.TryParse(s.TrimNullProtection(), out convertedInt), convertedValue = convertedInt })
.Where(w => w.didConvert)
.Select(s => s.convertedValue)
.ToList();
TrimNullProtection est une fonction personnalisée que j'ai créée et qui protège si la chaîne est null.
Ce qui précède fait disparaître toutes les chaînes qui n'ont pas pu être converties sans erreur. Si vous devez vous tromper s'il y a un problème avec la conversion, la réponse acceptée devrait faire l'affaire.
C'est simple. D'abord diviser la chaîne. Coupez l'espace vide après la virgule (,). Ensuite, utilisez système défini ToList ()
string TradeTypeEnum = "Physical Deal, Physical Concentrate"
Pour supprimer l'espace après ',' et convertir ce texte séparé par des virgules en Liste
List<string> IDs = (TradeTypeEnum.Split(',')).Select(t => t.Trim()).ToList();