using System.Collections.Generic;
public static void Main()
var result = Permutations<string>(new List<string>() { "A", "B","C" });
foreach (var item in result)
Console.WriteLine("[" + string.Join(",", item.Select(x => x.ToString())) + "]");
public static List<List<T>> Permutations<T>(List<T> list)
var result = new List<List<T>>();
foreach (var element in list)
var remainingList = new List<T>(list);
remainingList.Remove(element);
foreach (var item in Permutations<T>(remainingList))