У меня есть двумерный массив object[,]
, который содержит матрицу строк и столбцов (object[nRows, nColumns]
).
Я бы хотел разделить это на группы строк - например, партии по 1000 строк, каждая из которых я могу перечислить.
Итак, я ищу код C #, который выполняет следующее, но для двумерных массивов ( source ):
private IEnumerable<T[]> SplitArray<T>(T[] sourceArray, int rangeLength)
{
int startIndex = 0;
do
{
T[] range = new T[Math.Min(rangeLength, sourceArray.Length - startIndex)];
Array.Copy(sourceArray, startIndex, range, 0, range.Length);
startIndex += rangeLength;
yield return range;
}
while (startIndex < sourceArray.Length);
}
Эта попытка адаптации кода для массивов [,] не удалась - строки / столбцы начинают перемешиваться после первой итерации:
private IEnumerable<T[,]> SplitArray<T>(T[,] sourceArray, int rangeLength)
{
int startIndex = 0;
do
{
T[,] range = new T[Math.Min(rangeLength, sourceArray.GetLength(0) - startIndex), sourceArray.GetLength(1)];
Array.Copy(sourceArray, startIndex, range, 0, range.Length);
startIndex += rangeLength;
yield return range;
}
while (startIndex < sourceArray.GetLength(0));
}