Combinações com repetições C #
Preciso de ajuda com combinações com repetição. Pesquisei por toda a rede e, embora tenha encontrado alguns exemplos, não os entendo completamente. Meu objetivo é simples: uma função (CombinationsWithRepetiion) recebe uma lista com itens (nesse caso, valores inteiros) e comprimento (que representa quanto tempo cada combinação pode ter) e retorna uma lista contendo o resultado.
List<int> input = new List<int>() {1, 2, 3}
CombinationsWithRepetition(input, length);
resultado:
comprimento = 1: 1, 2, 3
length = 2: 11,12,13,21,22,23,31,32,33
length = 3: 111.112 ....
Espero que alguém me ajude e agradeço desde já!