ottimo
Io come "esercizio domenicale" ho implementato una classe che risolve il problema con un taglio piu pratico. E' il metodo che ti ho suggerito qualche giorno fa nell'altro post.
L'ho tradotta in vb.net con il traduttore da c# ad occhio credo sia un buon traduttore .
codice:
''' <summary>
''' Rappresenta una matrice a due dimensioni. Fornisce un metodo per restituire un istanza ridotta attravrso gli indici da escludere.
''' </summary>
''' <typeparam name="T">Tipo di elementi contenuti nella matrice</typeparam>
Public Class MatriceRiducibile(Of T)
	'contenitore interno unidimensionale degli elementi
	Private elementi As List(Of T)

	''' <summary>
	''' Crea una nuova istanza della classe MatriceRiducibile
	''' </summary>
	''' <param name="righe">Dimensione 0 (righe)</param>
	''' <param name="colonne">Dimensione 1 (colonne)</param>
	Public Sub New(righe As Integer, colonne As Integer)
		Length0 = righe
		Length1 = colonne

		elementi = New List(Of T)()
	End Sub

	''' <summary>
	''' Restituisce la dimensione 0 (righe)
	''' </summary>
	Public Property Length0() As Integer
		Get
			Return m_Length0
		End Get
		Private Set
			m_Length0 = Value
		End Set
	End Property
	Private m_Length0 As Integer

	''' <summary>
	''' Restituisce la dimensione 1 (colonne)
	''' </summary>
	Public Property Length1() As Integer
		Get
			Return m_Length1
		End Get
		Private Set
			m_Length1 = Value
		End Set
	End Property
	Private m_Length1 As Integer

	''' <summary>
	''' Ottiene o imposta l'elemento agli indici specificati 
	''' </summary>
	''' <param name="r">Indice di riga</param>
	''' <param name="c">Indice di colonna</param>
	''' <exception cref="System.IndexOutOfRangeException"></exception>
	''' <exception cref="System.InvalidOperationException"></exception>
	''' <remarks>L'inserimento di nuovi elementi può avvenire solo in modo sequenziae</remarks>
	Public Default Property Item(r As Integer, c As Integer) As T
		Get
			'check sugli indici
			If r > Length0 OrElse c > Length1 Then
				Throw New IndexOutOfRangeException("indici fuori dimensione")
			End If

			'elemento non ancora inserito
			If r * Length1 + c > elementi.Count Then
				Return Nothing
			End If

			Return elementi.ElementAt(r * Length1 + c)
		End Get
		Set
			'check sugli indici
			If r > Length0 OrElse c > Length1 Then
				Throw New IndexOutOfRangeException("indici fuori dimensione")
			End If

			'elemento non ancora inserito
			If r * Length1 + c > elementi.Count Then
				Throw New InvalidOperationException("Elemento non modificabile")
			End If

			'gli indici corrispondono alla posizione del prossimo elemento quindi aggiungo...
			If r * Length1 + c = elementi.Count Then
				elementi.Add(value)
			Else
				'...altrimenti l'elemento è gia stato inserito quindi modifico
				elementi(r * Length1 + c) = value
			End If
		End Set
	End Property

	''' <summary>
	''' Restituisce una nuova istanza della classe MatriceRiducibile che contiene tutti gli elementi dell'oggetto corrente eccetto quelli i cui indici di riga o di colonna sono presenti nell'insieme di input
	''' </summary>
	''' <param name="indici">Insieme degli indici da escludere</param>
	''' <exception cref="System.ArgumentOutOfRangeException"></exception>
	Public Function Riduci(indici As Integer()) As MatriceRiducibile(Of T)
		If Not IndiciDiRiduzioneValidi(indici) Then
			Throw New ArgumentOutOfRangeException("L'insieme contiene indici non validi")
		End If

		Dim ridotta As New MatriceRiducibile(Of T)(Length0 - indici.GetLength(0), Length1 - indici.GetLength(0))

		Dim c As Integer = 0
		For i As Integer = 0 To Length0 - 1
			For j As Integer = 0 To Length1 - 1
				If Not indici.Contains(i) AndAlso Not indici.Contains(j) Then
					Dim ri As Integer = c \ ridotta.Length1
					Dim rj As Integer = c Mod ridotta.Length1
					ridotta(ri, rj) = Me(i, j)
					c += 1
				End If
			Next
		Next

		Return ridotta
	End Function

	Private Function IndiciDiRiduzioneValidi(indici As Integer()) As Boolean
		Return indici.All(Function(i) i <= Length0 AndAlso i <= Length1)
	End Function
End Class
"AndAlso"???? io smetterei di usare questo linguaggio solo per questo!