我从遗留应用程序获得以下数据:
Id = 1
Name = Test 1
Id = 2
Name = Test 2#;10#;Test 3#;11#; Test 4#;12 // This simulates a multiple values field in legacy system
我想以下列格式进行转换,获取上面的多个值字段并在记录中进行转换。上面Id = 2的项目必须生成3条记录
Id = 1
Name = Test 1
Id = 2
Name = Test 2
Id = 2
Name = Test 3
Id = 2
Name = Test 4
即,我想要的是转换现在只有一个字段的内容,其中多个值用#连接;在包含多个记录的列表中。它可能使用Linq?
我尝试用下面的代码解决
var list = lista.Select(x => x.Name.Split(new string[] { "#;" }, System.StringSplitOptions.None)
.Where(xa => !int.TryParse(xa, out zeroValue))
.Select(xa =>
new {
Id = x.Id, Name = xa
})
).ToList();
此代码重新编译两个数组的List,第一个数组包含1个元素,第二个数组包含3.数组中的项目是正确的,但我想只有一个列表包含所有4个项目
答案 0 :(得分:0)
类似的东西:
var result=lista.SelectMany(
a=>Regex.Split(x.Name,"#;\d+#;"),(a,b)=>new {id=a.id,name=b});