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>)
您想要第三个,但是由于您调用它并指定了两个泛型类型,因此它实际上使用的是第二个,并且您的第二个参数(实际上是第三个,因为第一个是调用扩展方法的参数)不是 IEqualityComparer<TKey>
。修复方法是指定第三个类型。
var dict = tList.ToDictionary<string,string,string>(m => m, c => c)
不要指定通用类型,让编译器通过类型推断来解决
var dict = tList.ToDictionary(m => m, c => c)
如果您希望项目是值,那么您可以直接使用第一个项目,避免使用第二个lambda表达式。
var dict = tList.ToDictionary(c => c)