Вот подписи для ToDictionary
ToDictionary<TSource, TKey>(
IEnumerable<TSource>,
Func<TSource, TKey>)
ToDictionary<TSource, TKey>(
IEnumerable<TSource>,
Func<TSource, TKey>,
IEqualityComparer<TKey>)
ToDictionary<TSource, TKey, TElement>(
IEnumerable<TSource>,
Func<TSource, TKey>,
Func<TSource, TElement>)
ToDictionary<TSource, TKey, TElement>(
IEnumerable<TSource>,
Func<TSource, TKey>,
Func<TSource, TElement>,
IEqualityComparer<TKey>)
Вы хотите 3-ия, но так как вы называете его и указать два универсальных типов она вместо того, чтобы с помощью 2-ой и вашего второго аргумента (фактически третий с момента первого это аргумент, на который вызывается метод расширения) не является IEqualityComparer<TKey>
. Исправление либо указать третий тип
var dict = tList.ToDictionary<string,string,string>(m => m, c => c);
Не указывайте общие типы и пусть фигурку компилятора их через умозаключение типа
var dict = tList.ToDictionary(m => m, c => c);
Или, так как вы хотите детали быть значением вы можете просто использовать 1-й вариант и избегать второй лямбды вообще.
var dict = tList.ToDictionary(c => c);
Что вы пытались решить эту проблему и какие проблемы у вас были с вашими попытками? – Servy
@Servy Я обновил свой вопрос :) – Ala