string tags = "9,3,12,43,2"
List<int> TagIds = tags.Split(',');
这不起作用,因为split方法返回一个字符串[]
请帮忙。
答案 0 :(得分:380)
这是一种方法:
List<int> TagIds = tags.Split(',').Select(int.Parse).ToList();
答案 1 :(得分:19)
如果你想包含一些简单的验证并跳过无效的值(而不是抛出异常),这里有一些使用TryParse的东西:
string csv = "1,2,3,4,a,5";
int mos = 0;
var intList = csv.Split(',')
.Select(m => { int.TryParse(m, out mos); return mos; })
.Where(m => m != 0)
.ToList();
//returns a list with integers: 1, 2, 3, 4, 5
编辑:以下是基于Antoine反馈的更新查询。它首先调用TryParse来过滤掉任何坏的值,然后Parse来进行实际的转换。
string csv = "1,2,3,4,a,5,0,3,r,5";
int mos = 0;
var intList = csv.Split(',')
.Where(m => int.TryParse(m, out mos))
.Select(m => int.Parse(m))
.ToList();
//returns a list with integers: 1, 2, 3, 4, 5, 0, 3, 5
答案 2 :(得分:14)
您可以使用LINQ w / int.Parse()
将string[]
转换为IEnumerable<int>
,然后将该结果传递给List<T>
构造函数:
var tagIds = new List<int>(tags.Split(',').Select(s => int.Parse(s)));
答案 3 :(得分:7)
一点LINQ有很长的路要走:
List<int> TagIds = tags.Split(',')
.Select(t => int.Parse(t))
.ToList();
答案 4 :(得分:5)
如果没有LINQ查询,您可以选择此方法,
string tags = "9,3,12,43,2";
List<string> numbers = nos.Split(',').ToList<string>();
然后您可以将此List转换为整数类型...
答案 5 :(得分:4)
string tags = "9,3,12,43,2"
List<int> TagIds = tags.Split(',').Select(x => x.Trim()).Select(x=> Int32.Parse(x)).ToList();
答案 6 :(得分:2)
如果您使用的是C#3.5,可以使用Linq实现此目的
string tags = "9,3,12,43,2";
List<int> tagIds = tags.Split(',').Select(s=>int.Parse(s)).ToList();
或短篇
string tags = "9,3,12,43,2";
List<int> tagIds = tags.Split(',').Select(int.Parse).ToList();
答案 7 :(得分:2)
string tags = "9,3,12,43,2";
List<int> TagIds = tags.Split(',').Select(int.Parse).ToList();
答案 8 :(得分:1)
我对khalid13的回答做了修改。如果用户输入一个&#34; 0&#34;字符串,他的答案将从结果列表中删除。我做了类似的事情,但使用了一个匿名对象。
{{1}}
TrimNullProtection是我做的一个自定义函数,可以在字符串为空时保护它。
以上操作是删除任何无法转换且无错误的字符串。如果转换出现问题则需要输入错误,那么接受的答案应该可以解决问题。
答案 9 :(得分:1)
我偶然发现了这一点,我只是想在没有linq的情况下分享我自己的解决方案。这是一种原始方法。非整数值也不会在列表中添加。
List<int> TagIds = new List<int>();
string[] split = tags.Split(',');
foreach (string item in split)
{
int val = 0;
if (int.TryParse(item, out val) == true)
{
TagIds.Add(val);
}
}
希望这有帮助。
答案 10 :(得分:0)
很简单。首先分割字符串。 修剪逗号(,)后的空白。 然后使用系统定义的ToList()
string TradeTypeEnum = "Physical Deal, Physical Concentrate"
要删除','之后的空格,并将此逗号分隔的文本转换为List
List<string> IDs = (TradeTypeEnum.Split(',')).Select(t => t.Trim()).ToList();
答案 11 :(得分:0)
使用Java 8流,
List<Integer> valueInInt1 = Arrays.stream(tags.split(",")).mapToInt(num -> Integer.parseInt(num)).boxed().collect(Collectors.toList());
List<Integer> valueInInt2 = Arrays.stream(tags.split(",")).map(num -> Integer.parseInt(num)).collect(Collectors.toList());
我总是更喜欢Java 8流,因为您总是可以使用parallel stream。因此,如果您有成千上万的记录。很快。