user4542866
user4542866

Reputation:

Create an array of list

I want to create a array of list which will contain a string and a list of arrays.

example: I want like this one.

list(0) --- string value
list(0) ---list(0) - string value
list(0) ----list(1) - string value

list(1) --- string value
list(1) ---list(0) - string value
list(1) ----list(1) - string value

and so on..

how will i declare?

i tried:

 List<List<String>> list = new List<List<string>>(); //  but it didn't work.
 List<string[]> arrayList = new List<string[]>(); //  again it didn't work..

is this possible to declare? if so how?

Upvotes: 1

Views: 90

Answers (5)

Masoud Mohammadi
Masoud Mohammadi

Reputation: 1749

if you want to create an array of a string and a list, use the second way in the code. but if you want a list of list use first way in the code.

using System;
using System.Collections.Generic;

namespace ConsoleApplication1
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            // an example of list of strings
            List<string> names = new List<string>();
            names.Add("Mike");
            names.Add("Sarah");
            List<string> families = new List<string>();
            families.Add("Ahmadi");
            families.Add("Ghasemi");

            // 1st way
            List<List<string>> outsideList = new List<List<string>>();
            outsideList.Add(names);
            outsideList.Add(families);


            // 2nd way
            Dictionary<string, List<string>> d = new Dictionary<string, List<string>>();
            d.Add("first", names);
            d.Add("second", families);

            // how to access list<list<>>
            foreach (List<string> list in outsideList)
            {
                foreach (string s in list)
                    Console.WriteLine(s);
            }

            // how to access list inside dictionary
            foreach (List<string> list in d.Values)
            {
                foreach (string s in list)
                    Console.WriteLine(s);
            }
        }
    }
}

Upvotes: 0

ahmed
ahmed

Reputation: 13

try this

        List<List<String>> str_2d_list = new List<List<String>>();
        List<String> l1 = new List<string>();
        l1.Add("l1.string1");
        l1.Add("l1,string2");
        List<String> l2 = new List<string>();
        l2.Add("l2.string1");
        l2.Add("l2,string2");
        str_2d_list.Add(l1);
        str_2d_list.Add(l2);

Upvotes: 0

Md Ashaduzzaman
Md Ashaduzzaman

Reputation: 4038

As I can see in your data structure you've asked for A List containing two List's and all of them are of same string type then you should go with Dictionary. As a List can of of single type and you can add a single value to it at a time. Try Dictionary,

Dictionary<string, string> dictionary = new Dictionary<string, string>();

or if you want a Dictionary containing List of string,

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

Upvotes: 0

Enigmativity
Enigmativity

Reputation: 117175

Does this work for you?

public class Tree<T> : List<Tree<T>>
{
    public Tree(T value) { this.Value = value; }
    public T Value { get; set; }
}

It's not an array, but a list, but it's much the same structure.

You can then assign it like this:

var trees = new []
{
    new Tree<string>("Branch 1")
    {
        new Tree<string>("Leaf 1.1"),
        new Tree<string>("Leaf 1.2"),
    },
    new Tree<string>("Branch 2")
    {
        new Tree<string>("Leaf 2.1"),
        new Tree<string>("Leaf 2.2"),
    },
};

Upvotes: 0

Tamim Al Manaseer
Tamim Al Manaseer

Reputation: 3724

Isnt this a Dictionary<string, string[]>?

var x = new Dictionary<string, string[]>();

x.Add("string1", new string[] {"a", "b", "c"})

Then you can have a list of that dictionary.

var list = new List<Dictionary<string, string[]>>();

list.Add(x);

Upvotes: 1

Related Questions