C# 解析int[]from";“1,2,3”;
我有一个名为ID的多选下拉列表,它提交ID=1,2,3,我需要将其解析为整数数组,以便在filter方法中对其执行Contains()操作。目前我使用:C# 解析int[]from";“1,2,3”;,c#,.net,asp.net,arrays,C#,.net,Asp.net,Arrays,我有一个名为ID的多选下拉列表,它提交ID=1,2,3,我需要将其解析为整数数组,以便在filter方法中对其执行Contains()操作。目前我使用: string[] ids = Request["ID"].Split(','); 我真的不喜欢它,因为比较字符串比比较int慢。有什么建议吗 Request["ID"].Split(',').Select(x=>int.Parse(x)).ToArray(); 当然,如果生成的任何数字字符串不可“解析”(这样的单词存在吗?),则会引发
string[] ids = Request["ID"].Split(',');
我真的不喜欢它,因为比较字符串比比较int慢。有什么建议吗
Request["ID"].Split(',').Select(x=>int.Parse(x)).ToArray();
当然,如果生成的任何数字字符串不可“解析”(这样的单词存在吗?),则会引发此错误。这取决于如果转换为int更快或字符串比较更快,您将在数组中查找多少次
HashSet<int> ids = new HashSet<int>(from s in Request["ID"].Split(',')
select int.Parse(s));
HashSet ID=新的HashSet(来自请求[“ID”]中的s)。拆分(“,”)
选择int.Parse(s));
但是,如果您有多个id:s,可能最快的方法是创建一个HashSet
:
HashSet=newhashset(string[]ID=Request[“ID”].Split(“,”);
首先:
string[] arr = Request["ID"].Split(',')
然后:
然后:
新哈希集(结果);
(执行的最快容器包含()
)
另见:
- 如果您没有linq,您可以:
string[] ids = Request["ID"].Split(',');
int[] items = new int[ids.Length];
for(int i = 0; i<ids.Length; i++)
{
items[i] = int.Parse(ids[i]);
}
string[]ID=Request[“ID”].Split(',');
int[]items=新的int[id.Length];
对于(int i=0;iyou可以简化,顺便说一句;Request[“ID”].Split(,).Select(int.Parse).ToArray();
,甚至Array.ConvertAll(Request[“ID”].Split(“,”),int.Parse)
对于信息,最后4行是:int[]items=Array.ConvertAll(ID,int.Parse);
非常好,继续进行sigma扫描!(巴斯光年)。或。选择(Convert.ToInt32)
@Random:+1是的,这更简洁。我将更改答案以反映它。
Array.ConvertAll(arr, s => Int32.Parse(s));
Array.ConvertAll(arr, Int32.Parse);
arr.Select(s => Int32.Parse(s));
arr.Select(Int32.Parse);
new HashSet<int>(result);
int[] ids = Request["ID"].Split(',').Select(Convert.ToInt32).ToArray();
string[] ids = Request["ID"].Split(',');
int[] items = new int[ids.Length];
for(int i = 0; i<ids.Length; i++)
{
items[i] = int.Parse(ids[i]);
}