-3

我从遗留应用程序中获取以下数据:

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();

此代码返回两个数组的列表,第一个数组有 1 个元素,第二个有 3 个元素。数组中的项目是正确的,但我只想要一个包含所有 4 个项目的列表

4

1 回答 1

0

就像是:

var result=lista.SelectMany(
    a=>Regex.Split(x.Name,"#;\d+#;"),(a,b)=>new {id=a.id,name=b});
于 2013-07-16T03:32:02.483 回答