C# 解析int[]from";“1,2,3”;

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(); 当然,如果生成的任何数字字符串不可“解析”(这样的单词存在吗?),则会引发

我有一个名为ID的多选下拉列表,它提交ID=1,2,3,我需要将其解析为整数数组,以便在filter方法中对其执行Contains()操作。目前我使用:

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]);
      }