using System.Collections.Generic;
public static void Main()
List<string> numbers = new List<string>(){"1","2","3","4","5"};
List<string> possibleCombination = GetCombination(numbers, new List<string>(), "");
Console.Write(string.Join(", ", possibleCombination.Distinct().OrderBy(itm => itm)));
static List<string> GetCombination(List<string> list, List<string> combinations, string sumNum, bool addNumberToResult = false)
for (int i = 0; i <= list.Count - 1; i++) {
tmp = string.Concat(sumNum , list[i]);
List<string> tmp_list = new List<string>(list);
GetCombination(tmp_list,combinations,tmp, true);