Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Linq将包含旧数据的列表转换为新列表_C#_Linq - Fatal编程技术网

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返回数组的列表。传统系统存储多个值​​在一个字段中,我希望转换为多个记录