2

Dictionary<TType, List<TData>>ある種の内部データ コンテナーを表すがあります。TData 要素は TType によってグループ化されます。

ユーザーは私の辞書を照会することができ、ILookup<TType, TData>結果として返される必要があります。最も単純なクエリは、データ コンテナー全体を返すことです。

public ILookup<TType, TData> QueryEverything ()
{
    return _data.ToLookup(kvp => kvp.Key, kvp => kvp.Value);
}

しかし、それはうまくいきません。なんで?ルックアップは の辞書にすぎませんKey => IEnumerable<Value>か?

4

1 に答える 1

1

あなたはこれを試すことができます:

public ILookup<TType, TData> QueryEverything ()
{
    return _data.SelectMany(kvp => p.Value.Select(x => new { kvp.Key, Value = x }))
                .ToLookup(kvp => kvp.Key, kvp => kvp.Value);
}

もちろん、匿名型の代わりにKeyValuePair<TType, TData>またはTuple<TType, TData>を簡単に作成できます。

または、おそらくより良い解決策 (コードをリファクタリングできる場合) は、プライベート_dataディクショナリをに変更するILookup<TType, TData>ことです。そのため、最初にディクショナリを変換する必要はありません。

于 2013-10-06T20:47:21.770 に答える