Jasper Yu says to YSITD
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