public void SetCellInfos() { for (var i = 0; i < ColumnCount; i++) { for (var j = 0; j < RowCount; j++) { var cellInfo = new CellInfo { RowIndex = j, ColumnIndex = i }; var cellVal = Rows[j].Cells[i].Value?.ToString(); // Compares value from bottom to top. for (var k = j; k >= 0; k--) { var tempVal = Rows[k].Cells[i].Value?.ToString(); if (tempVal != cellVal) { break; } cellInfo.UpRowNum++; } // Compares value from top to bottom. for (var k = j; k < RowCount; k++) { var tempVal = Rows[k].Cells[i].Value?.ToString(); if (tempVal != cellVal) { break; } cellInfo.DownRowNum++; } CellInfos.Add(cellInfo); } } }
public int GetDownRowNum(int rowIndex, int columnIndex) { return(CellInfos.Where(w => w.RowIndex == rowIndex && w.ColumnIndex <= columnIndex).Select(s => s.DownRowNum).Min()); }