public static void Main()
int[] arr = new int[] { 1, 2, 3, 4, 5, 0, 0, 0, 0, 7, 8, 9};
int[] mask = new int[] { 0, 0, 0, 0 };
int[] subArr = new int[0];
var start = DateTime.Now;
for(int i = 0; i < linesToTest; i++)
subArr = SubArrayTillMask(2, arr, mask);
Console.WriteLine("Tested " + linesToTest + " lines in " + (DateTime.Now - start).TotalSeconds + " seconds");
static int[] SubArrayTillMask(int start, int[] array, int[] mask )
var limit = array.Length - len;
for( var i = 0; i <= limit; i++ )
if( mask[k] != array[i+k] ) break;
if( k == len ) foundPos = i;
return array.Skip(start).Take(foundPos-start).ToArray();