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

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

Mary-Kate Olsen
リリース: 2025-01-22 00:46:10
オリジナル
646 人が閲覧しました

How Can LINQ Group Data and Count Occurrences Efficiently?

LINQ を活用してデータを効率的にグループ化し、カウントします

C# の LINQ (統合言語クエリ) は、データを操作およびクエリするための強力な方法を提供します。データ セットをグループ化してカウントする必要がある場合、LINQ は簡潔で効率的なソリューションを提供します。

ユーザーとそれに関連する指標と日付を含むデータセットがあるとします。

<code>UserInfo(姓名, 指标, 日期, 其他指标)

数据:
joe  1 2011/01/01 5
jane 0 2011/01/02 9
john 2 2011/01/03 0
jim  3 2011/01/04 1
jean 1 2011/01/05 3
jill 2 2011/01/06 5
jeb  0 2011/01/07 3
jenn 0 2011/01/08 7</code>
ログイン後にコピー

私たちの目標は、インジケーターの順序 (0、1、2、3...) ごとにグループ化されたテーブルを取得し、各インジケーターの合計出現数を表示することです。

LINQ を使用したグループ化とカウント

LINQ を使用してこれを実現するには、「GroupBy」メソッドと「Select」メソッドを使用できます。

<code>foreach(var line in data.GroupBy(info => info.metric)
                        .Select(group => new { 
                             Metric = group.Key, 
                             Count = group.Count() 
                        })
                        .OrderBy(x => x.Metric))
{
     Console.WriteLine("{0} {1}", line.Metric, line.Count);
}</code>
ログイン後にコピー

手順:

  1. 「GroupBy」メソッドがデータセットに適用され、「metric」属性に従ってグループ化されます。これにより、一連のグループが生成され、各グループには同じ「メトリック」値を持つ要素が含まれます。
  2. 「Select」メソッドは、「Metric」(グループのキー)と「Count」(グループ内の要素の数)という 2 つのプロパティを持つ新しい匿名オブジェクトに各グループを投影するために使用されます。
  3. 「OrderBy」メソッドは、匿名オブジェクトを「メトリック」で昇順に並べ替えます。
  4. 結果は匿名オブジェクトのシーケンスであり、各オブジェクトはメトリックとその数を表します。

出力:

<code>0 3
1 2
2 2
3 1</code>
ログイン後にコピー

別の方法

提供されている LINQ ソリューションは効率的ですが、さらに簡素化することもできます。

<code>var result = data.GroupBy(info => info.metric)
                 .Select(group => new { 
                      Metric = group.Key, 
                      Count = group.Count() 
                 })
                 .OrderBy(x => x.Metric);</code>
ログイン後にコピー

ここでの唯一の違いは、「foreach」ループを使用して結果を反復する代わりに、結果を「result」という変数に代入することです。

重要なポイント

  • GroupBy() は一連のグループを作成します。
  • Select() グループを匿名オブジェクトに投影します。
  • Count() は、グループ内の要素の数を返します。
  • OrderBy() は、指定された属性によって結果を並べ替えます。

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

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