2009-06-24 61 views
121

¿Alguien sabe si hay una forma en que puedo insertar valores en un diccionario de C# cuando lo creo? Que pueda, pero no quieren, hacer dict.Add(int, "string") para cada elemento si hay algo más eficiente como:¿Cómo insertar valores en C# Dictionary en instanciación?

Dictionary<int, string>(){(0, "string"),(1,"string2"),(2,"string3")}; 
+1

posible duplicado de [¿Puedo utilizar un inicializador de colección para Dictionary entries?] (Http://stackoverflow.com/questions/495038/can-i-use-a-collection-initializer-for-dictionarytkey-tvalue-entries) –

Respuesta

152

Hay página entera sobre cómo hacerlo aquí:

http://msdn.microsoft.com/en-us/library/bb531208.aspx

ejemplo:

En el siguiente ejemplo de código, un Dictionary<TKey, TValue> se inicializa con instancias del tipo StudentName:

var students = new Dictionary<int, StudentName>() 
{ 
    { 111, new StudentName {FirstName="Sachin", LastName="Karnik", ID=211}}, 
    { 112, new StudentName {FirstName="Dina", LastName="Salimzianova", ID=317}}, 
    { 113, new StudentName {FirstName="Andy", LastName="Ruth", ID=198}} 
}; 
+0

Disculpa, utilicé términos de búsqueda erróneos en Google aparentemente. Este enlace es genial. – kd7iwp

+3

Esto solo funciona en el compilador .NET 3.5 ... solo téngalo en cuenta. –

+0

@ kd7iwp: no hay problema, parte de la función de este sitio es que los términos de búsqueda alternativos se pueden enrutar a algo útil. –

44
Dictionary<int, string> dictionary = new Dictionary<int, string> { 
    { 0, "string" }, 
    { 1, "string2" }, 
    { 2, "string3" } }; 
6

Puede crear instancias de un diccionario y añadir elementos en él así:

var dictionary = new Dictionary<int, string> 
    { 
     {0, "string"}, 
     {1, "string2"}, 
     {2, "string3"} 
    }; 
11

Se fueron casi allí:

var dict = new Dictionary<int, string>() 
{ {0, "string"}, {1,"string2"},{2,"string3"}}; 
8

también puede utilizar Expresiones Lambda para insertar cualquier par de valores clave de cualquier otro objeto IEnumerable. La clave y el valor pueden ser del tipo que desee.

Dictionary<int, string> newDictionary = 
       SomeList.ToDictionary(k => k.ID, v => v.Name); 

me parece que mucho más simple ya que utiliza los objetos IEnumerable todas partes en .NET

Esperanza que ayuda !!!

Tad.

0

Espero que funcione a la perfección.

Dictionary<string, double> D =new Dictionary<string, double>(); D.Add("String", 17.00);

+0

Hola, bienvenido a SO! La persona que originalmente hizo esta pregunta dijo específicamente que no desea hacer el método '.Add (int," string ")' para agregar valores a un diccionario. Lo siento pero esto no responde la pregunta. – Kezz101

+0

Sí, tienes razón Kezz101. Mi error. –

4

Para que sepan como de C# 6 ahora se puede inicializar de la siguiente manera

var students = new Dictionary<int, StudentName>() 
{ 
    [111] = new StudentName {FirstName="Sachin", LastName="Karnik", ID=211}, 
    [112] = new StudentName {FirstName="Dina", LastName="Salimzianova", ID=317}, 
    [113] = new StudentName {FirstName="Andy", LastName="Ruth", ID=198} 
}; 

Mucho más limpio :)

Cuestiones relacionadas