You just list the values:
List<string> l1 = new List<string> { "heelo", "goodbye" };
List<string> l2 = new List<string> { "heelo", "goodbye" };
List<int> l3 = new List<int> { 1, 2, 3, 4 };
var x = AllCombinationsOf(l1, l2);
...
public static List<List<T>> AllCombinationsOf<T>(params List<T>[] sets)
{
Console.WriteLine(sets.Length);
return sets.ToList();
}
Obviously, you can't add the third list into the parameters, but if you just list your params, they will be passed as an array of List-of-strings