私は数回で自分自身を見つけたような状況にILookupへのIEnumerableをマップします。私はILookup<T, U>
をその地図で定義したいと思っています。コンパクトな方法は、LINQ
これはかなり一般的な使用例のようですが、私はルックアップを作成するコンパクトな方法を見つけていません。特に、enumT.ToLookup(t=>t, t=>map(t))
はILookup<T, IEnumerable<U>>
を生成する。
私は数回で自分自身を見つけたような状況にILookupへのIEnumerableをマップします。私はILookup<T, U>
をその地図で定義したいと思っています。コンパクトな方法は、LINQ
これはかなり一般的な使用例のようですが、私はルックアップを作成するコンパクトな方法を見つけていません。特に、enumT.ToLookup(t=>t, t=>map(t))
はILookup<T, IEnumerable<U>>
を生成する。
ToLookup
を呼び出す前に、SelectMany
を使用してシーケンスを平坦化してください。
var lookup = sequence.SelectMany(key => Foo(key), (key, value) => new { key, value, })
.ToLookup(pair => pair.key, pair => pair.value);
ありがとう、私は 'SelectMany'の過負荷について知らなかったし、これまでのやり方よりもはるかに良い。 – starwed
私は本当に従っていません。あなたは、 't []'の配列と個々の 't'を' IEnumerable 'に写像する関数を持っていて、何らかの形でその関数を使ってそれぞれの' T'に一つの 'U'を生成したいとしますか? –
@ stephen.vakilそうではありません。彼はそれぞれの 'T'に対して' IEnumerable 'を持っていますが、彼が現在持っているのは' T'ごとにIEnumerable>です。 –
Servy