C# 将C中嵌套列表中相同索引的项分组#
我想重新排列一个嵌套列表,将列表中相同索引的每个项目分组到一个列表中 这就是我想要实现的目标 输入 输出C# 将C中嵌套列表中相同索引的项分组#,c#,linq,C#,Linq,我想重新排列一个嵌套列表,将列表中相同索引的每个项目分组到一个列表中 这就是我想要实现的目标 输入 输出 { ["a", "m", "x"], ["b", "n", "y"], ["c", "o", "z"], } 如何使用C#?实现这一点您要执行的操作称为转置 以下解决方案假设内部的所有阵列长度相同: var l
{
["a", "m", "x"],
["b", "n", "y"],
["c", "o", "z"],
}
如何使用C#?实现这一点您要执行的操作称为转置 以下解决方案假设内部的所有阵列长度相同:
var listOfArrays = new List<string[]>(){
new string[]{"a", "b", "c"},
new string[]{"m", "n", "o"},
new string[]{"x", "y", "z"},
};
var transposed = new List<string[]>();
var internalSize = listOfArrays[0].Length;
for(int i = 0; i < internalSize; i++)
{
var column = new List<string>();
foreach(var array in listOfArrays)
{
column.Add(array[i]);
}
transposed.Add(column.ToArray());
}
var listOfArrays=new List(){
新字符串[]{“a”、“b”、“c”},
新字符串[]{“m”、“n”、“o”},
新字符串[]{“x”、“y”、“z”},
};
var transposed=新列表();
var internalSize=listOfArrays[0]。长度;
对于(int i=0;i
您可以使用和GroupBy
:
var x = new[]{new[]{"a", "b", "c"}, new[]{"m", "n", "o"}, new[]{"x", "y", "z"}, };
var arrs = x
.SelectMany(arr => arr.Select((inner, i) => (inner, i))) // project inner elements with index & flatten
.GroupBy(i => i.i) // group by element index
.Select(g => g.Select(gi => gi.inner).ToArray()) // select element from projection
.ToArray();
@JohnathanBarclay谢谢你,修正了。谢谢这项工作。你试图实现什么?这将被称为
var x = new[]{new[]{"a", "b", "c"}, new[]{"m", "n", "o"}, new[]{"x", "y", "z"}, };
var arrs = x
.SelectMany(arr => arr.Select((inner, i) => (inner, i))) // project inner elements with index & flatten
.GroupBy(i => i.i) // group by element index
.Select(g => g.Select(gi => gi.inner).ToArray()) // select element from projection
.ToArray();