2013-04-30 2 views
1

Я хотел бы изменить формат ключевого значения словаря.форматирование значения ключа для словаря

Что-то вроде

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

dictCatalogue = dictCatalogue.Select(t => t.Key.ToString().ToLower() + "-ns").ToDictionary(); 

Как я могу изменить ключ моего словаря, не затрагивая значение

ответ

5

Вы находитесь на правильном пути создания нового словаря:

dictcatalogue = dictcatalogue.ToDictionary 
     (t => t.Key.ToString().ToLower() + "-ns", t => t.Value); 
+1

это работает, но он создает новый объект (словарь) .Для большого словаря может выбраться исключение переполнения памяти –

0

Вы не можете изменить ключ существующего словарной. Вам нужно будет удалить/добавить с помощью нового ключа.

что вам нужно сделать? возможно, мы можем предложить лучший способ сделать это

0

Я призываю вас рассмотреть вопрос о stuartd-х answer как правильное решение. Тем не менее, если вы заинтересованы в способе работы с словарем, игнорируя чувствительность к регистру, а не создавать новый словарь, проверьте следующий фрагмент кода:

class Program 
{ 
    static void Main(string[] args) 
    { 
     var searchedTerm = "test2-ns"; 
     Dictionary<string, string> dictCatalogue = 
      new Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase); 
     dictCatalogue.Add("test1", "value1"); 
     dictCatalogue.Add("Test2", "value2"); 

     // looking for the key with removed "-ns" suffix 
     var value = dictCatalogue[searchedTerm 
      .Substring(0, searchedTerm.Length - 3)]; 

     Console.WriteLine(value); 
    } 
} 

// Output 
value2 
Смежные вопросы