public static CustomBasicList <CustomBasicList <T> > GetAllPossibleCombinations <T>(this CustomBasicList <T> thisList) { CustomBasicList <CustomBasicList <T> > finList = new CustomBasicList <CustomBasicList <T> >(); var loopTo = thisList.Count; int x; for (x = 1; x <= loopTo; x++) { CustomBasicList <CustomBasicList <T> > tempList = thisList.GetCombinations(x); finList.AddRange(tempList); } return(finList); }