将数组拆分为多个数组

时间:2017-11-22 04:41:47

标签: c# .net arrays

如果我需要将数组拆分为特定长度,例如假设我有16个元素的数组,我想将其拆分为3个数组,每个数组包含5个元素 当涉及到最后一个阵列应该采取其余的 所以输出应该是这样的

  • 包含5个元素的数组1
  • 包含5个元素的数组2
  • 包含6个元素的数组3

我非常喜欢this answer,但它无法拆分为预定义的长度

public static IEnumerable<List<int>> SplitWhenNotIncreasing(List<int> numbers)
{
    for (int i = 1, start = 0; i <= numbers.Count; ++i)
    {
        if (i != numbers.Count && numbers[i] > numbers[i - 1])
            continue;

        yield return numbers.GetRange(start, i - start);
        start = i;
    }
}

1 个答案:

答案 0 :(得分:1)

public static IEnumerable<List<T>> SplitArray<T>(T[] arr, int splitsNumber)
{
    var list = arr.ToList();
    int size = list.Count / splitsNumber;
    int pos = 0;
    for (int i = 0; i + 1 < splitsNumber; ++i, pos += size)
    {
        yield return list.GetRange(pos, size);
    }

    yield return list.GetRange(pos, list.Count - pos);
}