ホームページ > バックエンド開発 > C++ > LINQ はグリッド表示用にデータをワイド形式からトール形式に効率的にピボットするにはどうすればよいですか?

LINQ はグリッド表示用にデータをワイド形式からトール形式に効率的にピボットするにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-05 16:14:41
オリジナル
375 人が閲覧しました

How Can LINQ Efficiently Pivot Data from a Wide to a Tall Format for Grid Display?

LINQ によるデータのピボット

データ サイエンスでは、ピボットによりデータをワイド形式からトール形式に、またはその逆に変換します。 Enum と User オブジェクトを含むアイテムを含むデータセットがあり、グリッド表示用にそれを平坦化する必要があるとします。直接的な方法にはネストされた foreach ループが含まれますが、この方法ではコレクション サイズの変更によるエラーが発生する可能性があります。

LINQ ピボット アプローチ

LINQ は、よりクリーンで効率的な方法を提供します。データをピボットするには:

  1. グループと選択: データを列挙値でグループ化し、各グループのユーザー名を選択します。
var grps = from d in data
           group d by d.Foo
           into grp
           select new
           {
               Foo = grp.Key,
               Bars = grp.Select(d2 => d2.Bar).ToArray()
           };
ログイン後にコピー
  1. 行数の決定: 最大数を計算します各グループのバーの長さに基づく行の数array.
int rows = grps.Max(grp => grp.Bars.Length);
ログイン後にコピー
  1. 出力列ヘッダー: Enum 値を列ヘッダーとして出力します。
foreach (var grp in grps) {
    Console.Write(grp.Foo + "\t");
}
ログイン後にコピー
  1. 出力データ: 行を反復処理し、対応するユーザーを出力します。
for (int i = 0; i < rows; i++) {
    foreach (var grp in grps) {
        Console.Write((i < grp.Bars.Length ? grp.Bars[i] : null) + "\t");
    }
    Console.WriteLine();
}
ログイン後にコピー

このコードはデータ ピボットをエレガントに実行し、複雑なデータセットをグリッド形式に平坦化するクリーンで効率的なソリューションを提供します。

以上がLINQ はグリッド表示用にデータをワイド形式からトール形式に効率的にピボットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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