Dim combination_element()() As Integer
Private Sub Calculate_Click(sender As Object, e As EventArgs) Handles Calculate.Click
ReDim combination_element(SpecList.Items.Count - 1)
For i As Integer = 0 To SpecList.Items.Count - 1
ReDim combination_element(i)(Int(Total_Length.Value / SpecList.Items(i).ToString) + 1)
For j As Integer = 0 To Int(Total_Length.Value / SpecList.Items(i).ToString) + 1
combination_element(i)(j) = j
Next
Next
CartesianProduct(combination_element)
End Sub
Private Function CartesianProduct(Of T)(ParamArray sequences As T()()) As T()()
Dim result As IEnumerable(Of T()) = {New T() {}}
For Each sequence In sequences
Dim s = sequence
result = From seq In result
From item In s
Select seq.Concat({item}).ToArray()
Next
Return result.ToArray()
End Function