Wie kann ich alle möglichen Kombinationen einer Teilmenge erhalten?

Bedenken SieList<string>

List<string> data = new List<string>();
data.Add("Text1");
data.Add("Text2");
data.Add("Text3");
data.Add("Text4");

Das Problem, das ich hatte, war: Wie kann ich jede Kombination einer Teilmenge der Liste erhalten? Ein bisschen wie folgt:

#Subset Dimension 4
Text1;Text2;Text3;Text4

#Subset Dimension 3
Text1;Text2;Text3;
Text1;Text2;Text4;
Text1;Text3;Text4;
Text2;Text3;Text4;

#Subset Dimension 2
Text1;Text2;
Text1;Text3;
Text1;Text4;
Text2;Text3;
Text2;Text4;

#Subset Dimension 1
Text1;
Text2;
Text3;
Text4;

Ich habe eine anständige Lösung gefunden, von der es sich lohnt, sie hier zu teilen.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage