2012-06-12 3 views
0

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

list.ToDictionary(v=> v, v=>true); 

Для первого параметра в ToDictionary, я могу понять первый параметр является элементом словаря , Но что такое v=> true?

Второй параметр должен быть типа IEqualityComparer. Какая цель это служит? Как v=> true такие же как IEqualityComparer?

ответ

1

This - способ используется.

Второй параметр (v => истина) является ElementSelector (функции преобразования для получения значения элемента результата от каждого элемента).

список с элементами 1, 2 и 3 приведут к словарю с последующим отображением (все значения true):

1: true 
2: true 
3: true 
+0

Или этот метод на английском языке ;-) http://msdn.microsoft.com/en-us/library/bb548657.aspx –

+0

@MA fifi Спасибо, исправлено :-) Рассвет ты, google! – sloth

+0

Словарь как имя предлагает _dictionary_, он используется для поиска значения с помощью ключа. Если у вас нет и не нужно значение, вам, вероятно, намного лучше использовать HashSet executor

1

Если в списке есть [1,2,3,4] и конвертировать его в словарь, list.ToDictionary(v=> v, v=>true); то ваш словарь это значение

[1,true] 
[2,true] 
[3,true] 
[4,true]. 

Первое значением является ключевым вторым является значением

РЕДАКТИРОВАТЬ:

так же, как @dkson сказал второй параметр является ElementSelector. Вы можете увидеть это в intellisense, когда вы перейдете к 3-му из 4-х записей :)

+0

Да, но Intellisense показывает, что элемент secodn в ToDcitionary должен быть 'IEqualityComparer' – user1240679

+0

Intellisense может быть ошибочным –

1

Вы посмотрите на MSDN documentation. Это перегрузка принимает второй IEqualityComparer аргумент:

ToDictionary<TSource, TKey>(IEnumerable<TSource>, Func<TSource, TKey>, IEqualityComparer<TKey>) 

Однако, в вашем примере вы используете перегрузку, которая принимает Func<TSource, TElement>, который отвечает за генерацию значения словаря:

ToDictionary<TSource, TKey, TElement>(IEnumerable<TSource>, Func<TSource, TKey>, Func<TSource, TElement>) 

(В вашем случае все значения равны true)

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