通过用分隔符拆分字符串,将字符串列入对象列表

时间:2018-01-25 13:56:35

标签: c# .net linq

我有一个字符串列表:

var list = new List<string>();

列表中的数据采用以下格式A1_A2_A3A1_A2_A3A1_A2_A3

我希望按A1_A2_A3拆分列表的每个元素_并将结果存储到List<Item>

其中Item是一个包含三个属性a1a2a3

的类

我想使用LINQ来做,我可以通过使用循环来做到这一点但我正在寻找使用LINQ的解决方案

这是我的工作:

list.Select(x => x.Split('_').Select(s => new Item()
                {
                    a1 = x[0],
                    a2 = x[1],
                    a3 = x[2]
                }))

2 个答案:

答案 0 :(得分:3)

您需要拆分'_'并且您的选择已关闭,您首先需要选择Split结果然后索引到结果数组,您的代码索引到原始字符串({{ 1}})

x

答案 1 :(得分:3)

您要做的是将拆分的每个部分都放在不同的属性中:

var list = new List<string>();
list
    .Select(x => x.Split('_'))
    .Select(s => new Item()
    {
        a1 = s[0],
        a2 = s[1],
        a3 = s[2]
    });

请注意,这不会检查传递给索引器的值索引。如果您想验证,那么您可以:

var result = list.Select(x => {
    var parts = x.Split('_');
    return new Item { a1 = parts[0], a2 = parts[1], a3 = parts[2] };
}).ToList();