使用LINQ将多个集合折叠到一个集合中

0 .net c# linq merge list

是否可以使用LINQ将两个或多个相同类型和大小的集合折叠/合并到相同类型和大小的新集合中?

var list01 = new List<string> { "A",  "", "", "B",  "",  "", "" };
var list02 = new List<string> {  "", "C", "",  "",  "", "D", "" };
var list03 = new List<string> {  "",  "", "",  "", "E",  "", "" };

           The desired result:  "A", "C", "", "B", "E", "D", "";
Run Code Online (Sandbox Code Playgroud)

如果一个集合在某个位置保存数据,则其他集合都不会将数据保存在同一位置,例如list02和list03中的第一个位置将始终为空,因为list01在第一个位置保持A.

Joh*_*ica 9

您可能想要使用Zip两次:

var result = list01
                .Zip(list02, (a, b) => !string.IsNullOrEmpty(a) ? a : b)
                .Zip(list03, (a, b) => !string.IsNullOrEmpty(a) ? a : b);
Console.WriteLine(string.Join(",", result));
Run Code Online (Sandbox Code Playgroud)

在线尝试