3

次のコードを使用して を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>' から 'System.Collections.Generic.IEnumerable' に変換できません

'System.Collections.Generic.List>' には 'ToLookup' の定義が含まれておらず、最適な拡張メソッド オーバーロード 'System.Linq.Enumerable.ToLookup(System.Collections.Generic.IEnumerable, System.Func)' には無効なものがあります引数

「ラムダ式」から「System.Func」に変換できません

ラムダ式で何が間違っていますか?

4

1 に答える 1

6

<string, object>タイプが自動的に推論されるように削除するだけです:

var lookup = list.ToLookup(a => a.Key);

それが本当にあるべきように:

var lookup = list.ToLookup<KeyValuePair<string, object>, string>(a => a.Key);
于 2012-11-28T04:19:07.330 に答える