2009-06-24 3 views
121

Кто-нибудь знает, есть ли способ вставить значения в словарь C#, когда я его создам? Я могу, но не хочу, делать dict.Add(int, "string") для каждого элемента, если есть что-то более эффективное, как:Как вставить значения в словарь C# при создании экземпляра?

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

возможно дубликат [Могу ли я использовать коллекцию инициализатор для словаря записи?] (Http://stackoverflow.com/questions/495038/can-i-use-a-collection-initializer-for-dictionarytkey-tvalue-entries) –

ответ

152

Там же целая страница о том, как сделать это здесь:

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

Пример:

В следующем примере кода, Dictionary<TKey, TValue> является инициализирован с экземплярами типа 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

Извините, я использовал неправильные поисковые запросы на Google, по-видимому. Эта ссылка замечательная. – kd7iwp

+3

Это работает только на компиляторе .NET 3.5, хотя ... просто имейте это в виду. –

+0

@ kd7iwp - не проблема, часть функции этого сайта такова, что альтернативные поисковые термины могут быть перенаправлены на что-то полезное. –

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

Вы можете создать экземпляр словаря и добавлять элементы в него, как это:

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

Вы были почти там:

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

Вы можете также использовать Лямбда-выражения для вставки любых пар значений ключа из любого другого объекта IEnumerable. Ключ и значение могут быть любого типа, который вы хотите.

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

Я считаю, что гораздо проще, так как вы используете IEnumerable объекты везде в .NET

Надежда, что помогает !!!

Tad.

0

Надеюсь, что он будет работать отлично.

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

+0

Привет, добро пожаловать в SO! Человек, который первоначально задал этот вопрос, специально сказал, что они не хотят использовать метод .Add (int, "string") 'для добавления значений в словарь. Извините, но это не отвечает на вопрос. – Kezz101

+0

Да, вы правы Kezz101. Виноват. – 2015-03-15 20:15:14

4

Только так вы знаете, как в C# 6 теперь вы можете инициализировать его следующим образом

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} 
}; 

Гораздо чище :)