将逗号分隔的List <string>转换为List <int>

时间:2015-11-26 09:31:22

标签: c# .net

我有一个包含逗号分隔值的List<string>,例如,每个项目看起来像&#34; 123,123,123和#34;。现在,我想将其转换为List<int>。我怎么能这样做?

我尝试了以下内容:

List<int> TagIds = parameters.AccidentId.Split(',').Select(int.Parse).ToList();

但它说:

  

System.Collections.Generic.List不包含&#34; Split&#34;的定义。接受类型&#39; System.Collections.Generic.List&#39;的第一个参数。可以找到。

我将这样的AccidentId定义为:

if (AccidentId != null && AccidentId.itemsSelected != null)
{
    parameters.AccidentId = new List<string>();
    foreach(var param in AccidentId.itemsSelected)
    {
        parameters.AccidentId.Add(param);
    }
}  

2 个答案:

答案 0 :(得分:3)

您实际上有一个列表列表。列表中的每个string都是以逗号分隔的列表。

您可以使用SelectMany将多个序列展平为一个列表。

类似的东西:

parameters.AccidentId.SelectMany(s => s.Split(',').Select(int.Parse)).ToList()

这大致相当于

List<int> TagIds = new List<int>();

foreach(string s in parameters.AccidentId)
{
    string[] accidentIds = s.Split(',');
    foreach(string accidentId in accidentIds)
    {
        TagIds.Add(int.Parse(accidentId));
    }
} 

答案 1 :(得分:2)

如果parameters.AccidentIdList<string>而不是string,则您无法直接使用String.Split。但是你应该重命名这个属性,比如说。 AccidentIdList

你可以使用这种方法:

List<int> TagIds = parameters.AccidentId
    .SelectMany(id => id.Split(',').Select(int.Parse))
    .ToList();

Array.ConvertAll

List<int> TagIds = parameters.AccidentId
    .SelectMany(id => Array.ConvertAll(id.Split(','), int.Parse))
    .ToList();