.NET Fiddle

CSharp · Console

/Program.cs

using System;
using System.Linq;
					
public class Program
{
	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 };
		
		var subArr = SubArrayTillMask(2, arr, mask);
		
		
		
		Console.WriteLine(String.Join(",",subArr));
	}
	
	
	static int[] SubArrayTillMask(int start, int[] array, int[] mask ) 
	{
		var foundPos = -1;
		
		var len = mask.Length;
		var limit = array.Length - len;
		for( var i = 0;  i <= limit;  i++ ) 
		{
			var k = 0;
			for( ;  k < len;  k++ ) {
				if( mask[k] != array[i+k] ) break;
			}
			if( k == len ) foundPos = i;
		}
		if(foundPos == -1)
			return array;
		
		return array.Skip(start).Take(foundPos-start).ToArray();
	}
}
;