Home > Software design >  how to create a loop that creates lists
how to create a loop that creates lists

Time:07-13

I want to create a loop that makes lists the name of the lists that need to come from another list.

I tried doing it like that.

for (int i = 0; i < Names.Count; i  )
   {
       List<string> Name[i] = new List<string>();
   }

CodePudding user response:

Just pass the source collection in the list constructor, like this

var newList = new List<string>(Names);

If you want more control, you can still do your loop, but declare the destination list first:

var newList = new List<string>();

for (int i = 0; i < Names.Count; i  )
{
    newList.Add(Names[i]);
}

And finally, if you need a list of lists, where each list is named, you'd use a different data structure, for example a Dictionary<string, List<string>> instead:

var listOfLists = new Dictionary<string, List<string>>();

for (int i = 0; i < Names.Count; i  )
{
    listOfLists.Add(
        Names[i], // <--- the name of the list is the key
        new()     // <--- the named list (initially empty)
    );
}

Which, in modern C#, can be shortened further to become

var listOfLists = Names.ToDictionary(name => name, _ => new List<string>());
  • Related