0

How can I break an array into 2 arrays in c#

for e.g I have an array [1,2,3,4,5,6,7,8,9,10] break it in to [1,2,3,4,5] and [6,7,8,9,10]

Dmitrii Lobanov
  • 4,897
  • 1
  • 33
  • 50
Rehan Aryan
  • 63
  • 1
  • 1
  • 4
  • Refer this link, you may get some idea [Array][1] [1]: http://stackoverflow.com/questions/1367843/break-up-array-into-little-arrays – Nagaraj Oct 01 '12 at 05:33
  • possible duplicate of [C# Splitting An Array](http://stackoverflow.com/questions/1841246/c-sharp-splitting-an-array) – nawfal Feb 18 '13 at 12:08

4 Answers4

4

Using Linq

var a = new[] {1,2,3,4,5,6,7,8,9,10}
var a1 = a.Take(a.Length / 2).ToArray();
var a2 = a.Skip(a.Length / 2).ToArray();
Richard Schneider
  • 34,944
  • 9
  • 57
  • 73
2

With Linq:

var source = new int[] {1,2,3,4,5,6,7,8,9,10};
var firstHalf = source.Take(source.Length/2).ToArray();
var secondHalf = source.Skip(source.Length/2).ToArray();

With Array.Copy:

var source = new int[] {1,2,3,4,5,6,7,8,9,10};
var firstHalf = new int[source.Length/2];
var secondHalf = new int[source.Length - source.Length/2];
Array.Copy(source, firstHalf, firstHalf.Length];
Array.Copy(source, firstHalf.Length, secondHalf, 0, secondHalf.Length];
lc.
  • 113,939
  • 20
  • 158
  • 187
0

You could use the following method to split an array into 2 separate arrays

public void Split<T>(T[] array, int index, out T[] first, out T[] second) {
  first = array.Take(index).ToArray();
  second = array.Skip(index).ToArray();
}

public void SplitMidPoint<T>(T[] array, out T[] first, out T[] second) {
  Split(array, array.Length / 2, out first, out second);
}

Usage:

int[] myArray = new int[] { 1,2,3,4,5,6,7,8,9,10 };
int[] newArray1;
int[] newArray2;

SplitMidPoint<int>(myArray, out newArray1, out newArray2);

From: C# Splitting An Array

Community
  • 1
  • 1
Adam Plocher
  • 13,994
  • 6
  • 46
  • 79
0


    public static T[] SubArray(this T[] data, int index, int length)
    {
          T[] result = new T[length];
          Array.Copy(data, index, result, 0, length);
          return result;
    }
    public void Split(T[] Source, T[] arr1,T[] arr2)
    {
         if(source.Length == 0)
         {
            arr1 = arr2 = new T[0];
            return ;
         } 
         int half = source.Length/2;
         arr1 = source.SubArray(0, half);
         arr2 = source.SubArray(half-1, half);
    } 
Bedasso
  • 1,652
  • 1
  • 14
  • 17