我有一个List<string>包含逗号分隔的值,例如,每个项目看起来都像“ 123、123、123”。现在,我想将其转换为List<int>。我怎样才能做到这一点?

我尝试了以下方法:

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


但它说:


  System.Collections.Generic.List不包含“ Split”的定义,该定义接受类型为“ System.Collections.Generic.List”的第一个参数。


我这样定义我的AccidentId:

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

最佳答案

您实际上有一个列表列表。列表中的每个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));
    }
}

09-04 12:24