共有属性値によって集約するためにLINQ GroupByオペレーターを効率的に使用する オブジェクト指向プログラミングでは、特定の属性を共有する複数のオブジェクトの状況が一般的です。たとえば、「人」クラスには「ID」と車のリストが含まれています。各ユニークなIDに関連付けられた車を明確かつ効率的に集約するために、LINQの「GroupBy」オペレーターを使用できます。
GroupByオペレーターは、指定されたキーの値に応じて、オブジェクトシーケンスをより小さなグループに分割します。 「Person」カテゴリでは、「PersonID」プロパティをグループオブジェクトの鍵として使用できます。これにより、辞書に似た構造が効果的に作成されます。キーは唯一の「人物」値であり、値は各「PersonID」に関連付けられた「車」値のリストです。
コードの例
「人」オブジェクトをグループ化して、「PersonID」に従って対応する車リストを取得するために、次のLINQクエリ式を使用できます。または、非クエリ式を使用して同じ結果を達成することができます。
results
「結果」変数には、2つの属性がある匿名オブジェクトのコレクションが含まれるようになりました。
<code class="language-csharp">var results = from p in persons group p.car by p.PersonId into g select new { PersonId = g.Key, Cars = g.ToList() };</code>
"cars":人が所有するすべての車のリスト
<code class="language-csharp">var results = persons.GroupBy( p => p.PersonId, p => p.car, (key, g) => new { PersonId = key, Cars = g.ToList() });</code>
「結果」コレクションの反復により、各ユニークな「PersonID」の必要な情報を取得できます。
その他の考慮事項以上がLinqのGroupByオペレーターは、共有プロパティ値に基づいてオブジェクトを効率的に集約するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。