如何创建一个列表&LT; T&GT;从逗号分隔字符串? [英] How to create a List<T> from a comma separated string?
本文介绍了如何创建一个列表&LT; T&GT;从逗号分隔字符串?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
由于变量
字符串ID =的Request.QueryString [IDS]; //1,2,3,4,5;
有没有办法把它转换成一个列表没有做这样的事情。
列表&LT; INT&GT; myList中=新名单&LT; INT&GT;();的foreach(在ids.Split字符串编号(,))
{
如果(int.TryParse(ID))
{
myList.Add(Convert.ToInt32(ID));
}
}
解决方案
要从头开始创建列表,使用LINQ:
ids.Split('')选择(I =&GT; int.Parse(I))。了ToList();
如果您已经有列表对象,省略了ToList()调用和使用的AddRange:
myList.AddRange(ids.Split('')选择(I =方式&gt; int.Parse(I)));
如果字符串中的某些条目可能不是整数,你可以使用的TryParse:
INT温度;
变种myList中= ids.Split(,)
。选择(S = gt;新建{P = int.TryParse(S,出温度),I =温度})
。凡(X =&GT; x.P)
。选择(X =&GT; x.I)
.ToList();
这避免了临时工/的TryParse但跳过无效的项目最后一个(慢)的方法是使用正则表达式:
VAR myList中= Regex.Matches(IDS,[0-9] +)演员LT;匹配&GT;()的SelectMany(M =方式&gt;&m.Groups.Cast LT;组&gt;())选择。(G =&GT; int.Parse(g.Value));
不过,如果你的条目之一溢出INT(999999999999),这可以抛出。
Given the variable
string ids = Request.QueryString["ids"]; // "1,2,3,4,5";
Is there any way to convert it into a List without doing something like
List<int> myList = new List<int>();
foreach (string id in ids.Split(','))
{
if (int.TryParse(id))
{
myList.Add(Convert.ToInt32(id));
}
}
解决方案
To create the list from scratch, use LINQ:
ids.Split(',').Select(i => int.Parse(i)).ToList();
If you already have the list object, omit the ToList() call and use AddRange:
myList.AddRange(ids.Split(',').Select(i => int.Parse(i)));
If some entries in the string may not be integers, you can use 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();
One final (slower) method that avoids temps/TryParse but skips invalid entries is to use Regex:
var myList = Regex.Matches(ids, "[0-9]+").Cast<Match>().SelectMany(m => m.Groups.Cast<Group>()).Select(g => int.Parse(g.Value));
However, this can throw if one of your entries overflows int (999999999999).
这篇关于如何创建一个列表&LT; T&GT;从逗号分隔字符串?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文