List in List

I

Izzy84

Hallo,

ich hab ein Programm welches eine Liste mit Namen enthält, entweder 16 oder 32 Stück.
Diese Liste will ich zufällig aufteilen auf viele kleinere Listen der Größe 4, quasi 4er Gruppen.
Am Ende würde ich die ganzen 4er Listen gerne in einer übergeordneten Liste zusammenfassen, eine Liste die dann quasi alle Gruppen enthält. Derzeit schaut das so aus:

C#:
private void randomGroups(List<string> listNames)
{
    List<string> singleGroup = new List<string>();
    List<List<string>> allGroups = new List<List<string>>();
    int count = listNames.Count;
    int random;
    Random rnd = new Random();

    while(count > 0)
    {
        if(singleGroup.Count < 4)
        {
            random = rnd.Next(0, count - 1);
            singleGroup.Add(listNames[random]);
            listNames.RemoveAt(random);
            count--;
        }
        else
        {
            allGroups.Add(singleGroup);
            singleGroup.Clear();
        }
    }    
}

Das funktioniert soweit eigtl auch, ich hab am Ende, je nach Anzahl Namen, 4 oder 8 kleine Listen in der großen Liste. Allerdings sind die alle leer :(
Was vermutlich daran liegt das die singleGroup hinzugefügt wird und danach geleert wird.
Klar könnte ich jetzt 4-8 verschiedene Listen erzeugen, aber das erscheint mir etwas suboptimal.

Daher wollte ich fragen wie ich eine kleine Liste einer großen Liste zufügen kann und danach die kleine wieder bearbeiten kann ohne das sie sich in der Großen verändert. Ein Clone() hab ich leider vergeblich gesucht bei Listen :(

Man ist das blöd zu beschreiben, ich hoffe ihr versteht was ich meine...

Grüßle
 
Argh, wenn man vor lauter Bäumen (Listen ?) den Wald nicht mehr sieht.
Problem ist gelöst, statt:

C#:
allGroups.Add(singleGroup);

Einfach:

C#:
allGroups.Add(new List<string>(singleGroup));

Und schon gehts....

Grüßle
 

Neue Beiträge

Zurück