【发布时间】:2018-08-16 14:43:10
【问题描述】:
我自己也试过这样做,真是让人头疼……
我希望能够从T[key1][key2] 使用LINQ 到Select,它实际上“看到”T[key2][key1](即转置矩阵)。我想这样做的原因是我不必手动转置数组项(这很慢),而是提供即时转置的数组项。
不确定这是否可能!
编辑:添加此功能的示例:
T[][] 或T[,] .Select(item => item),其中item 的类型为T[],作为第N 个枚举数位置的集合。
int[,] matrix = new int[2,2] {{1, 2}, {3, 4}};
matrix = matrix.Select(item => item); //Where .Select magically transposes
//Matrix is now {{1, 3}, {2, 4}}
【问题讨论】:
-
你能举例说明你的意思吗?
-
LINQ 不能那样工作。它不了解锯齿状数组的概念。我将使用
Transpose()方法创建一个Matrix类型,该方法返回一个带有转置值的新Matrix对象。另外,当您说“这很慢”时,我不确定您的意思。您的意思是实施缓慢还是执行缓慢? -
所以,目前,我正在使用一些代码首先就地转置整个数组,然后在此集合上使用 LINQ。转置对我很有用,因为我想对 key2 的平均值,而不是 key1 的平均值。我想要完成的是 LINQ 的枚举器,它枚举“交换”的键。
标签: c# linq matrix transpose ienumerator