我有一个字符串列表:
var list = new List<string>();
列表中的数据采用以下格式A1_A2_A3
,A1_A2_A3
,A1_A2_A3
我希望按A1_A2_A3
拆分列表的每个元素_
并将结果存储到List<Item>
其中Item
是一个包含三个属性a1
,a2
,a3
我想使用LINQ来做,我可以通过使用循环来做到这一点但我正在寻找使用LINQ的解决方案
这是我的工作:
list.Select(x => x.Split('_').Select(s => new Item()
{
a1 = x[0],
a2 = x[1],
a3 = x[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();