El limite inferior es 1, luego con un bucle puedes recorrer todas las combinaciones posibles... y con otro dentro formar los valores de cada combinación, sumando el ciclo actual a cada uno de los valores del array recibido...
Código:
funcion Combinaciones(array de bytes nums())
byte j, k, max
string combinacion
max = (49 - MayorEn(nums))
bucle para j desde 1 hasta max)
Si (j= nums(0)) imprimir "Esta es la combinacion recibida."
bucle para k desde 0 hasta nums.length -1
combinacion = (combinacion & (nums(k) + j).tostring)
siguiente
imprimir j.tostring, combinacion
combinacion = ""
siguiente
imprimir "Con estos valores, pudieron formarse " & j.tostring & " combinaciones distintas.
fin funcion
byte = funcion MayorEn(array de bytes valores())
entero k
byte j = valores(0)
bucle para k desde 1 hasta valores.length-1
si (valores(k) > j)
j = valores(k)
fin si
siguiente
devolver j
fin funcion
p.d.: Viendo que no eres capaz de pasar ese simple código a NET, me parece que quizás tampoco seas capaz de pasar este pseudocódigo, así que te lo he pasado yo mismo y te muestro una simple captura de la interfaz...

La interfaz es muy simple, un textbox, un boton y un listbox para recoger la lista...
Cuando pulsas el botón trata de crear el array con los valores (no verifica si están en el rango 1-49, pero si no es siquierra un byte 'cantará error'... en fin se supone que la se usará a sabiendas de los valores que vas a introducir, luego huelga hacer una comprobación, si comprueba que al menos haya 6 valores (ese despite si es fácil que ocurra)... Por lo mismo que antes, tampoco verifica que no haya numeros repetidos...
Luego se invoca una función que vacía a la lista y la rellena con todas las combinaciones posibles... cuando mayor sea el valor mayor de la serie, tantas menos combinaciones habrá. Nota que la serie no precisa estar ordenada, NEt dispone de su propios métodos para hallar el valor mayor en un array, lo que nos evita escribir una función...
Y aquí el código...
Código
Imports System.Text Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim Nums() As String, txt As String Dim Valores() As Byte, k As UInt16 txt = TextBox1.Text.Replace(" ", "") Nums = txt.Split(",") If (Nums.Length = 6) Then ReDim Valores(0 To 5) For k = 0 To 5 Valores(k) = System.Byte.Parse(Nums(k)) Next Call Combinaciones(Valores) Else MessageBox.Show("No, no no... Debe haber 6 y solo 6 numeros, separados por 1 coma...") End If End Sub Private Sub Combinaciones(ByVal Valores As Byte()) Dim j, k, max As Byte Dim combinacion As String = "" ListBox1.Items.Clear() max = (49 - Valores.Max) For j = 0 To max For k = 0 To 5 combinacion &= ((Valores(k) + j).ToString) & ", " Next ListBox1.Items.Add(combinacion) combinacion = "" Next End Sub End Class

