2015-11-26 28 views
1

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

我曾尝试以下:

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

但它说:

System.Collections.Generic.List不包含“拆分”的定义,接受一个类型的第一个参数可以找到'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); 
    } 
} 
+0

是'parameters.AccidentId'列表? –

+0

好像你在用'string.Split'混合。 –

回答

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

如果parameters.AccidentIdList<string>而不是一个单一string你不能直接使用String.Split。但是,无论如何,你应该重命名财产,f.e. 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(); 
相关问题