string tags = "9,3,12,43,2"

List<int> TagIds = tags.Split(',');

这行不通,因为split方法返回一个字符串[]


当前回答

有一点LINQ可以走很长的路:

 List<int> TagIds = tags.Split(',')
         .Select(t => int.Parse(t))
         .ToList();

其他回答

有一点LINQ可以走很长的路:

 List<int> TagIds = tags.Split(',')
         .Select(t => int.Parse(t))
         .ToList();
string tags = "9,3,12,43,2"

List<int> TagIds = tags.Split(',').Select(x => x.Trim()).Select(x=> Int32.Parse(x)).ToList();
string tags = "9,3,12,43,2";
List<int> TagIds = tags.Split(',').Select(int.Parse).ToList();

这里有一种方法:

List<int> TagIds = tags.Split(',').Select(int.Parse).ToList();

我修改了khalid13的答案。如果用户输入一个字符串“0”,他的回答将从结果列表中删除该字符串。我做了类似的事情,但使用了匿名对象。

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是一个自定义函数,我做了保护,如果字符串为空。

上面所做的是剔除任何不能正确转换的字符串。如果转换存在问题,则需要报错,那么接受的答案应该是有用的。