ホームページ > バックエンド開発 > C++ > LINQ はどのようにしてデータを効率的にグループ化し、各グループ内の出現をカウントできるのでしょうか?

LINQ はどのようにしてデータを効率的にグループ化し、各グループ内の出現をカウントできるのでしょうか?

DDD
リリース: 2025-01-22 00:41:08
オリジナル
300 人が閲覧しました

How Can LINQ Efficiently Group Data and Count Occurrences Within Each Group?

LINQ データの集約とグループ化: 効率的な方法の詳細な説明

LINQ (統合言語クエリ) は、さまざまなシナリオでデータをクエリおよび操作するための強力かつ簡潔な方法を提供します。一般的なタスクの 1 つは、特定の基準に基づいてデータをグループ化し、各グループ内の出現数をカウントすることです。

データのグループ化とカウントに LINQ を使用する

UserInfo という名前のデータ セットがあり、name、metric、day、other_metric などのフィールドが含まれているとします。メトリック値で並べ替えてメトリックの数を取得するには、次の LINQ 構文を使用できます:

<code class="language-csharp">var groupMetrics = 
    from info in data // 从数据源开始
    group info by info.metric into grp // 按'metric'字段分组
    select new { Key = grp.Key, Count = grp.Count() }; // 选择键和计数</code>
ログイン後にコピー

このクエリは次のことを行います:

  1. GroupBy 句は、メトリック値に基づいて UserInfo オブジェクトをグループ化し、一連のグループを生成します。
  2. Select 句は、各グループを匿名タイプに投影します。匿名タイプには、Key (メトリック値を表す) と Count (出現回数を表す) の 2 つのプロパティがあります。
  3. 最後の OrderBy 句は、メトリック値の昇順で結果を並べ替えます。

このクエリを実行すると、メトリック値とそれに対応する数を含むリストが取得され、データセット内のメトリック分布の概要が得られます。

カスタマイズされたグループ化結果

上記のソリューションでは、匿名型を使用してグループ化された結果を構築します。ただし、グループ化されたデータを表すカスタム クラスを定義して、出力形式をより詳細に制御することもできます。

その他のソリューション

LINQ to SQL を使用する代替案は、元の質問で言及されています:

<code class="language-csharp">var pl = from r in info
         orderby r.metric    
         group r by r.metric into grp
         select new { key = grp.Key, cnt = grp.Count()};</code>
ログイン後にコピー

どちらのソリューションもメトリックによるグループ化と発生回数のカウントという目標を達成していますが、LINQ to SQL 構文はデータベースのクエリ用に特別に設計されており、純粋な LINQ 構文は UserInfo オブジェクトの列挙されたコレクションに適用できます。どの方法を選択するかは、作業しているコンテキストとデータ ソースによって異なります。

以上がLINQ はどのようにしてデータを効率的にグループ化し、各グループ内の出現をカウントできるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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