2011-04-14 14 views
8

Estoy tratando de crear una lista de Dictionary<string,int> elementos. No estoy seguro de cómo agregar elementos en la lista y cómo recuperar los valores al atravesar la lista. Quiero usarlo en C#, así:¿Cómo creo una lista de diccionarios en .NET?

public List<Dictionary<string,int>> MyList= new List<Dictionary<string,int>>(); 
+1

¿En qué idioma? –

+1

ejemplo de código y etiqueta de idioma por favor –

+0

Quiero usarlo en C#. como lista pública > MyList = new List >(); – Vivek

Respuesta

18

Creo que esto es lo que estás buscando?

{ 
    MyList.Add(new Dictionary<string,int>()); 
    MyList.Add(new Dictionary<string,int>()); 
    MyList[0].Add("Dictionary 1", 1); 
    MyList[0].Add("Dictionary 1", 2); 
    MyList[0].Add("Dictionary 2", 3); 
    MyList[0].Add("Dictionary 2", 4); 
    foreach (var dictionary in MyList) 
     foreach (var keyValue in dictionary) 
      Console.WriteLine(string.Format("{0} {1}", keyValue.Key, keyValue.Value)); 
} 
+0

si algo cerca de su respuesta. Gracias por la respuesta. – Vivek

+0

Gracias a todos por responder. – Vivek

+7

Debe aceptar una respuesta de alguien si está contento. Y bienvenido a SO! – Jaapjan

4

Creo que tiene que saber en cuál de los dictados debe agregar su nuevo valor. Entonces, la lista es el problema. No puedes identificar el diccionario adentro.

Mi solución para esto sería una clase de colección de diccionarios. Se podría tener este aspecto:

public class DictionaryCollection<TType> : Dictionary<string,Dictionary<string,TType>> { 
    public void Add(string dictionaryKey,string key, TType value) { 

     if(!ContainsKey(dictionaryKey)) 
      Add(dictionaryKey,new Dictionary<string, TType>()); 

     this[dictionaryKey].Add(key,value); 
    } 

    public TType Get(string dictionaryKey,string key) { 
     return this[dictionaryKey][key]; 
    } 
} 

entonces usted puede utilizar de esta manera:

var dictionaryCollection = new DictionaryCollection<int> 
             { 
              {"dic1", "Key1", 1}, 
              {"dic1", "Key2", 2}, 
              {"dic1", "Key3", 3}, 
              {"dic2", "Key1", 1} 
             }; 
1
// Try KeyValuePair Please.. Worked for me 


    private List<KeyValuePair<string, int>> return_list_of_dictionary() 
    { 

     List<KeyValuePair<string, int>> _list = new List<KeyValuePair<string, int>>(); 

     Dictionary<string, int> _dictonary = new Dictionary<string, int>() 
     { 
      {"Key1",1}, 
      {"Key2",2}, 
      {"Key3",3}, 
     }; 



     foreach (KeyValuePair<string, int> i in _dictonary) 
     { 
      _list.Add(i); 
     } 

     return _list; 

    } 
8

Mucho ha cambiado en 5 años ... Ahora puede hacer lo siguiente:

ListDictionary list = new ListDictionary(); 
list.Add("Hello", "Test1"); 
list.Add("Hello", "Test2"); 
list.Add("Hello", "Test3"); 

¡Disfrútalo!

+1

¡Nunca he oído hablar de esto! ¡Asombroso! Muchas gracias :) – IfElseTryCatch

Cuestiones relacionadas