Here are the signatures for 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>)
You want the 3rd one, but since you call it and specify two generic types it is instead using the 2nd one and your second argument (actually 3rd since the first is the argument the extension method is called on) is not an IEqualityComparer<TKey>. The fix is to either specify the third type
var dict = tList.ToDictionary<string,string,string>(m => m, c => c);
Don't specify the generic types and let the compiler figure it out via type inference
var dict = tList.ToDictionary(m => m, c => c);
Or since you want the items to be the values you can just use the 1st one instead and avoid the second lambda altogether.
var dict = tList.ToDictionary(c => c);