ホームページ > バックエンド開発 > C++ > LinqのGroupByオペレーターは、共有プロパティ値に基づいてオブジェクトを効率的に集約するにはどうすればよいですか?

LinqのGroupByオペレーターは、共有プロパティ値に基づいてオブジェクトを効率的に集約するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-02-02 00:26:09
オリジナル
190 人が閲覧しました

How Can LINQ's GroupBy Operator Efficiently Aggregate Objects Based on Shared Property Values?

共有属性値によって集約するためにLINQ GroupByオペレーターを効率的に使用する オブジェクト指向プログラミングでは、特定の属性を共有する複数のオブジェクトの状況が一般的です。たとえば、「人」クラスには「ID」と車のリストが含まれています。各ユニークなIDに関連付けられた車を明確かつ効率的に集約するために、LINQの「GroupBy」オペレーターを使用できます。

linqグループ操作キャラクター

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>
ログイン後にコピー
"personid":人の唯一のID

"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」の必要な情報を取得できます。

その他の考慮事項

    ネーミング契約と一致するためには、属性名を使用する場合は「personid」を使用することをお勧めします。
  • 比較
  • の比較
または、「グループビー」の代わりに「ルックアップ」メソッドを使用して、同様の結果を達成できます。 「Lookup」は辞書構造を効果的に作成します。キーは唯一の「PersonID」値であり、値は各「PersonID」に関連付けられた「車」値のコレクションです。 「ルックアップ」を使用して車の車を取得するには、次の構文を使用できます。

以上がLinqのGroupByオペレーターは、共有プロパティ値に基づいてオブジェクトを効率的に集約するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート