如何创建一个列表< T>从逗号分隔字符串? [英] How to create a List<T> from a comma separated string?

查看:148
本文介绍了如何创建一个列表< T>从逗号分隔字符串?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

由于变量

 字符串ID =的Request.QueryString [IDS]; //1,2,3,4,5;

有没有办法把它转换成一个列表没有做这样的事情。

 列表< INT> myList中=新名单< INT>();的foreach(在ids.Split字符串编号(,))
{
    如果(int.TryParse(ID))
    {
        myList.Add(Convert.ToInt32(ID));
    }
}


解决方案

要从头开始创建列表,使用LINQ:

  ids.Split('')选择(I => int.Parse(I))。了ToList();

如果您已经有列表对象,省略了ToList()调用和使用的AddRange:

  myList.AddRange(ids.Split('')选择(I =方式> int.Parse(I)));

如果字符串中的某些条目可能不是整数,你可以使用的TryParse:

  INT温度;
变种myList中= ids.Split(,)
    。选择(S = gt;新建{P = int.TryParse(S,出温度),I =温度})
    。凡(X => x.P)
    。选择(X => x.I)
    .ToList();

这避免了临时工/的TryParse但跳过无效的项目最后一个(慢)的方法是使用正则表达式:

  VAR myList中= Regex.Matches(IDS,[0-9] +)演员LT;匹配>()的SelectMany(M =方式>&m.Groups.Cast LT;组>())选择。(G => 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆