43

groupBy と ToLookup 拡張メソッドの違いは何だろうと思っています。

次のようなオブジェクトのリストを用意しましょう。

public class Person
{
    public uint Id { get; set; }
    public string Name { get; set; }
    public DateTime Birthday { get; set; }
}


List<Person> People { get; set; }

これで、上記の拡張メソッドを使用できます。

var groupedPeople = People.GroupBy((x) => x.Id);

var lookupPeople = People.ToLookup((x) => x.Id);

これらのステートメントの違いは何ですか?

前もって感謝します。

マルコ B.

4

2 に答える 2

83

ToLookup即時ILookup実行を使用し、キーでグループを検索できる を返します。

GroupBy遅延実行を使用し、各グループが最初に検出された順序でグループを返すだけです (たとえば、最初のグループにはソース データの最初の要素が含まれます)。後でグループを調べることができるという考えはありません。キーで。結果を反復処理するたびに、再度グループ化する必要があります。

基本的に、どちらを使用するかは、結果をどうするかによって異なります。それらを 1 回だけ反復する場合 (たとえば、さらに変換する場合)GroupByは、通常は問題ありません。それらを複数の操作のコレクションとして保持する場合は、 の即時性ToLookupが役立ちます。

于 2012-12-06T08:17:15.667 に答える
15
  1. ToLookup はバッファリングされます。groupBy はグループを繰り返します。
  2. groupBy は遅延実行を使用し、ToLookup は即時実行を使用します。
于 2012-12-06T08:20:25.033 に答える