Oscar vs
Oscar vs

Reputation: 386

Create List with name from variable

Is it possible in C# to create a list and name it from a variable or similar?

Let's say I have a list with 10 rows in it:

a, b, c, d, e, f, g, h, i, j

Can I make 10 lists from this list, each having a name like one of the rows?

Something like

List<string> myList = new List<string>();
foreach (var line in myList)
{
    List<string> line = new List<string>();
}

What I want is to make a few lists to store data in, but I won't know the names before the program runs so it needs to generate those dynamically.

Upvotes: 1

Views: 15991

Answers (3)

Dmitrii Bychenko
Dmitrii Bychenko

Reputation: 186748

It seems that you want a Dictionary<String, List<String>> like this:

  var data = myList
    .ToDictionary(line => line, line => new List<string>());

And so you can

check if "variable" exists

  if (data.ContainsKey("z")) {...} 

address "variable"

  data["a"].Add("some value");

add "variable"

  data.Add("z", new List<string>());

Upvotes: 1

Mathias R. Jessen
Mathias R. Jessen

Reputation: 174575

Sounds like you want a Dictionary of List<string>s:

Dictionary<string, List<string>> dict = new Dictionary<string, List<string>>();

foreach (var line in myList)
{
    dict.Add(line, new List<string>());
}

Now you can access each list based on the original string we used for the key:

List<string> aList = dict["a"];

Upvotes: 7

Dan Forbes
Dan Forbes

Reputation: 2824

You could try something like this:

var newList = new Dictionary<string, List<string>>();
foreach (var line in myList)
{
  newList.Add(line, new List<string>());
}

This will give you the data structures in which to store your new data and will allow you to reference them based on the names in the first list.

Upvotes: 3

Related Questions