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/6/google-chrome/4.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# 将C中嵌套列表中相同索引的项分组#_C#_Linq - Fatal编程技术网

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