para crear la lista desde cero, utilizar LINQ:
ids.Split(',').Select(i => int.Parse(i)).ToList();
Si ya tiene el objeto de lista, omita la llamada ToList() y utilizar AddRange:
myList.AddRange(ids.Split(',').Select(i => int.Parse(i)));
Si algunas entradas en la cadena puede no ser enteros, puede utilizar TryParse:
método
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();
Una última (más lento) que evita temps/TryParse pero se salta las entradas no válidas es el uso de expresiones regulares:
var myList = Regex.Matches(ids, "[0-9]+").Cast<Match>().SelectMany(m => m.Groups.Cast<Group>()).Select(g => int.Parse(g.Value));
Sin embargo, esto puede tirar si una de las entradas desborda int (999999999999).
¿Puede especificar el comportamiento que desea por favor - se trata sólo de que el anterior, es decir, en silencio ignoran los bits que no son Int32s? Ninguna de las respuestas está tomando eso en cuenta ... –
Estoy ignorando silenciosamente las identificaciones erróneas porque las escriben los editores de contenido que quieren incluir ciertas imágenes en sus páginas, sin embargo, puedo poner la validación en el campo para detener eso. sucediendo, supongo –
Sí, eso es exactamente lo que estaba insinuando ... –