2013-06-05 4 views
-1
Dictionary<string, MyClass> dict = new Dictionary<string, MyClass>(); 

//where MyClass has an override for ToString() 

Теперь, как я могу получить List<KeyValuePair<string, string>> от Словаря, где значение в KeyValuePair если MyClass.ToString() и Ключ в KeyValuePair такой же, как у dict ..?словарь <строка, MyClass> в списке <KeyValuePair <строка, строка >> где значение в KeyValuePair является MyClass.ToString()

Есть ли простой способ сделать это? Как я могу использовать функцию IDictionary.ToList<>()? Plz просветить ..

ответ

6

Не тестировался/сост, но что-то подобное должно работать:

dict.Select(kvp => new KeyValuePair<string, string>(kvp.Key, kvp.Value.ToString())).ToList() 

если синтаксис не 100% пятно, я надеюсь, что вы получили эту идею.

+0

Это должно работать :) – Johan

+0

благодарит jods, что быстро .. будет попробовать, что (о: 3 –

+0

Опять же, спасибо много Jods .. отлично работает с dict.Select (kvp => new KeyValuePair (kvp.Key, kvp.Value.ToString())) ToList() –

2

Использование LINQ:

var list = dict.Select(k => 
    new KeyValuePair<string,string>(k.Key, k.Value.ToString())) 
    .ToList(); 
+0

Привет, Мэтт, спасибо за ответ. Может показаться вам довольно прямолинейным, но можете ли вы объяснить, что означает лямбда-оператор: «=>»? –

+1

Параметр '.Select()' является функцией, поэтому 'k => ...' определяет функцию, которая берет 'k' в качестве параметра, а тело функции - после' => '. –

+1

Получил это .. Plz исправьте меня, если я ошибаюсь .. Синтаксис: k => lambda (k) означало, что лямбда (k), анонимная функция .. используется на месте, как блок встроенного кода javascript. (k => lambda (k)) заменит делегата. –

Смежные вопросы