我需要的是一种基本操作(我相信这个操作有一个名字,但我目前还不知道)。我有一个矩阵,例如:
{1,2,3}
{A,N,F}
{7,8,9}
我希望将其转换为
{1,A,7}
{2,N,8}
{3,F,9}
(上述仅为对象标识符,而非实际值。实际对象类型相同且无序)
我更喜欢声明性的解决方案,但速度也很重要。我将需要处理相当多的表格(每分钟处理10万个单元格),如果速度过慢就会成为关键路径。
然而,我更感兴趣的是可读性较强的解决方案。 我正在寻找以下方法的替代方案。(“替代”并不意味着变体,而是不同的方法)
{1,2,3}
{A,N,F}
{7,8,9}
我希望将其转换为
{1,A,7}
{2,N,8}
{3,F,9}
(上述仅为对象标识符,而非实际值。实际对象类型相同且无序)
我更喜欢声明性的解决方案,但速度也很重要。我将需要处理相当多的表格(每分钟处理10万个单元格),如果速度过慢就会成为关键路径。
然而,我更感兴趣的是可读性较强的解决方案。 我正在寻找以下方法的替代方案。(“替代”并不意味着变体,而是不同的方法)
var arrays = rows.Select(row => row.ToArray());
var cellCount = arrays.First().Length;
for(var i = 0;i<cellCount;i++){
yield return GetRow(i,arrays);
}
IEnumerable<T> GetRow(int i,IEnumerable<T[]> rows){
foreach(var row in rows}{
yield return row[i];
}
}
在两个几乎同样易读的解决方案中,我会选择更快的一个,但是可读性要比速度重要。
编辑 它将始终是一个方阵。
{7,A,1} {8,N,2} {9,F,3}
。 - MSalters