Per creare la lista da zero, utilizzare LINQ:
ids.Split(',').Select(i => int.Parse(i)).ToList();
Se hai già l'oggetto lista, omettere la chiamata ToList() e utilizzare AddRange:
myList.AddRange(ids.Split(',').Select(i => int.Parse(i)));
Se alcune voci la stringa non può essere interi, è possibile utilizzare TryParse: metodo che evita temps
int temp;
var myList = ids.Split(',')
.Select(s => new { P = int.TryParse(s, out temp), I = temp })
.Where(x => x.P)
.Select(x => x.I)
.ToList();
Un ultimo (più lento)/TryParse ma salta voci non valide è quello di utilizzare Regex:
var myList = Regex.Matches(ids, "[0-9]+").Cast<Match>().SelectMany(m => m.Groups.Cast<Group>()).Select(g => int.Parse(g.Value));
Tuttavia, questo può gettare se uno dei vostri voci trabocca int (999.999.999.999).
è possibile specificare il comportamento desiderato si prega - è solo come sopra, vale a dire, in silenzio ignorano i bit che non sono Int32s? Nessuna delle risposte sta prendendo in considerazione questo ... –
Sto silenziosamente ignorando id cattivi perché sono inseriti dagli editor di contenuti che vogliono inserire determinate immagini nelle loro pagine, tuttavia posso mettere la convalida sul campo per impedirglielo succede suppongo –
Sì, questo è esattamente quello che stavo suggerendo a ... –