我正在尝试使用以下代码将IEnumerable<KeyValuePair<string, object>>
转换为ILookup<string, object>
:
var list = new List<KeyValuePair<string, object>>()
{
new KeyValuePair<string, object>("London", null),
new KeyValuePair<string, object>("London", null),
new KeyValuePair<string, object>("London", null),
new KeyValuePair<string, object>("Sydney", null)
};
var lookup = list.ToLookup<string, object>(a => a.Key);
但编译器抱怨:
实例参数:无法转换 'System.Collections.Generic.List&GT;' 至 'System.Collections.Generic.IEnumerable'
和
'System.Collections.Generic.List&GT;' 不包含'ToLookup'的定义和最佳扩展名 方法过载 “System.Linq.Enumerable.ToLookup(System.Collections.Generic.IEnumerable, System.Func)'有一些无效的参数
和
无法从'lambda expression'转换为'System.Func'
我对lambda表达式做错了什么?
答案 0 :(得分:5)
只需删除<string, object>
即可自动推断类型:
var lookup = list.ToLookup(a => a.Key);
真的应该是:
var lookup = list.ToLookup<KeyValuePair<string, object>, string>(a => a.Key);