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(',');
这行不通,因为split方法返回一个字符串[]
当前回答
有一点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();
这很简单。首先拆分字符串。 修改逗号(,)后的空格。 然后使用系统定义的ToList()
string inputText = "text1, text2"
删除','后的空格,并将此逗号分隔的文本转换为List
List<string> resultList = (inputText.Split(',')).Select(t => t).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是一个自定义函数,我做了保护,如果字符串为空。
上面所做的是剔除任何不能正确转换的字符串。如果转换存在问题,则需要报错,那么接受的答案应该是有用的。
这里有一种方法:
List<int> TagIds = tags.Split(',').Select(int.Parse).ToList();
你可以使用LINQ w/ int. parse()将字符串[]转换为IEnumerable<int>,然后将结果传递给List<T>构造函数:
var tagIds = new List<int>(tags.Split(',').Select(s => int.Parse(s)));