C#使用Linq从锯齿状数组中获取列
发布时间:2020-12-15 18:03:25 所属栏目:百科 来源:网络整理
导读:如何使用 Linq从锯齿状数组中获取列的元素作为平面数组???? public class MatrixT{ private readonly T[][] _matrix; public Matrix(int rows,int cols) { _matrix = new T[rows][]; for (int r = 0; r rows; r++) { _matrix[r] = new T[cols]; } } public T
如何使用
Linq从锯齿状数组中获取列的元素作为平面数组????
public class Matrix<T> { private readonly T[][] _matrix; public Matrix(int rows,int cols) { _matrix = new T[rows][]; for (int r = 0; r < rows; r++) { _matrix[r] = new T[cols]; } } public T this[int x,int y] { get { return _matrix[x][y]; } set { _matrix[x][y] = value; } } // Given a column number return the elements public IEnumerable<T> this[int x] { get { } } } Matrix<double> matrix = new Matrix<double>(6,2); matrix[0,0] = 0; matrix[0,1] = 0; matrix[1,0] = 16.0; matrix[1,1] = 4.0; matrix[2,0] = 1.0; matrix[2,1] = 6.0; matrix[3,0] = 5.0; matrix[3,1] = 7.0; matrix[4,0] = 1.3; matrix[4,1] = 1.0; matrix[5,0] = 1.5; matrix[5,1] = 4.5; 解决方法
只是:
public IEnumerable<T> this[int x] { get { return _matrix.Select(row => row[x]); } } 当然最好在LINQ查询之前检查x是否不在范围之外. 无论如何,鉴于您正在处理矩阵,为了更加清晰,您可以切换到bidimensional array而不是锯齿状阵列(因此毫无疑问,这两个维度的大小). 相反,如果性能确实对您很重要,请继续使用看似比二维数组快一点的锯齿状数组(例如LINK1,LINK2). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |