C# 使用Linq将包含旧数据的列表转换为新列表
我从遗留应用程序中获取以下数据:C# 使用Linq将包含旧数据的列表转换为新列表,c#,linq,C#,Linq,我从遗留应用程序中获取以下数据: 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
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个项目的列表,例如:
var result=lista.SelectMany(
a=>Regex.Split(x.Name,"#;\d+#;"),(a,b)=>new {id=a.id,name=b});
你试过什么?2不确定你的筛选标准是什么。对不起,我没有完成我的问题就发布了,现在问题已经完成了。你能用文字描述一下你想做什么,而不是显示“查找十个不同点”图片吗?同时显示您尝试过的内容,以及您的结果与预期结果的差异。我尝试使用此var list=lista.Selectx=>x.Name.Splitnew string[]{},System.StringSplitOptions.None.Wherexa=>!int.TryParsexa,out valor.Selectxa=>new{Id=x.Id,Name=xa}.ToList;Wich返回数组的列表。传统系统存储多个值在一个字段中,我希望转换为多个记录