要从零开始创建列表,请使用LINQ:
ids.Split(',').Select(i => int.Parse(i)).ToList();
如果您已经有了列表对象,请省略ToList()调用并使用AddRange:
myList.AddRange(ids.Split(',').Select(i => int.Parse(i)));
如果字符串中的某些条目可能不是整数,您可以使用TryParse:
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();
还有一种最终(较慢)的方法避免使用临时变量/TryParse但跳过无效条目,就是使用正则表达式:
var myList = Regex.Matches(ids, "[0-9]+").Cast<Match>().SelectMany(m => m.Groups.Cast<Group>()).Select(g => int.Parse(g.Value));
然而,如果你的输入之一超出了int类型的范围(999999999999),这可能会导致错误。