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

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

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


当前回答

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

其他回答

如果没有LINQ Query,你可以选择这个方法,

string tags = "9,3,12,43,2";
List<string> numbers = nos.Split(',').ToList<string>();

然后你可以把这个List转换成整数类型…

你可以使用LINQ w/ int. parse()将字符串[]转换为IEnumerable<int>,然后将结果传递给List<T>构造函数:

var tagIds = new List<int>(tags.Split(',').Select(s => int.Parse(s)));

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

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

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();