3

IEnumerable<T>を に変換する最も効率的な方法は何ですか?IDictionary<U, IEnumerable<T>>

U は、たとえば、情報が T のプロパティに保持されている Guid です。

基本的に、これにより、元のリストのすべての項目がオブジェクト内のプロパティの値に基づいてグループ化されたリストの辞書が作成されます。

オブジェクト定義:

class myObject
{
    public Guid UID { get; set; }

    // other properties
}

皮切りに:

IEnumerable<myObject> listOfObj;

で終わる:

IDictionary<Guid, IEnumerable<myObject>> dictOfLists;

WherebylistOfObjには、UID プロパティの値が重複することもあるさまざまなオブジェクトが含まれています。

4

4 に答える 4

2

ILookup<U,T>1 つまたは複数の値にマップされたキーのコレクション」としての は、 と同一ではありませんIDictionary<U, IEnumerable<T>>が、同等であり、いくつかの点で優れています。作成するのは確かに簡単です:

var myLookup = listOfObj.ToLookup(x => x.UID);
于 2011-02-28T21:44:02.980 に答える
2

変換する最も効率的な方法、コンストラクターで を受け取り、指定された へのルックアップを使用してその場ですべての操作を実装するインターフェイスの実装を確実に作成することです。このように、変換自体は O(1) です。IDictionary<U, IEnumerable<T>>IEnumerable<T>IEnumerable<T>

ただし、そのような実装ではパフォーマンスが低下します (ただし、これは変換効率とは関係ありません)。

于 2011-02-28T20:30:49.783 に答える