Maison > développement back-end > C++ > Comment LINQ peut-il faire pivoter efficacement les données d'un format large à un format haut pour l'affichage en grille ?

Comment LINQ peut-il faire pivoter efficacement les données d'un format large à un format haut pour l'affichage en grille ?

Susan Sarandon
Libérer: 2025-01-05 16:14:41
original
375 Les gens l'ont consulté

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

Pivoter les données avec LINQ

En science des données, le pivotement transforme les données d'un format large en un format haut ou vice versa. Supposons que vous disposiez d'un ensemble de données avec des éléments contenant un objet Enum et un objet User et que vous deviez l'aplatir pour un affichage en grille. Une méthode simple implique des boucles foreach imbriquées, mais cette approche peut introduire des erreurs dues à la modification de la taille de la collection.

L'approche pivot LINQ

LINQ fournit une méthode plus propre et plus efficace pour faire pivoter les données :

  1. Grouper et sélectionner : regroupez les données par la valeur Enum et sélectionnez le noms d'utilisateur pour chaque groupe.
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()
           };
Copier après la connexion
  1. Déterminer le nombre de lignes : calculez le nombre maximum de lignes en fonction de la longueur du tableau Bars de chaque groupe.
int rows = grps.Max(grp => grp.Bars.Length);
Copier après la connexion
  1. En-têtes de colonne de sortie : Imprimez les valeurs Enum comme en-têtes de colonne.
foreach (var grp in grps) {
    Console.Write(grp.Foo + "\t");
}
Copier après la connexion
  1. Données de sortie : parcourez les lignes et imprimez les noms d'utilisateur correspondants ou null pour les valeurs manquantes.
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();
}
Copier après la connexion

Ce code effectue élégamment le pivotement des données, fournissant une solution propre et efficace pour aplatir des ensembles de données complexes dans une grille format.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal