Maison > développement back-end > C++ > Comment LINQ peut-il faire pivoter efficacement les données d'une collection d'énumérations et d'objets utilisateur pour l'affichage en grille ?

Comment LINQ peut-il faire pivoter efficacement les données d'une collection d'énumérations et d'objets utilisateur pour l'affichage en grille ?

Susan Sarandon
Libérer: 2025-01-06 00:32:39
original
304 Les gens l'ont consulté

How Can LINQ Efficiently Pivot Data from a Collection of Enums and User Objects for Grid Display?

Pivot de données à l'aide de LINQ

Dans votre scénario donné, vous disposez d'une collection contenant des énumérations (TypeCode) et des objets User que vous devez aplatir pour un affichage en grille. Pour y parvenir, vous rencontrez des difficultés lorsque vous tentez une approche foreach. Heureusement, LINQ offre une solution plus élégante.

Implémentation du pivot LINQ

À l'aide de LINQ, vous pouvez faire pivoter les données comme suit :

// Assuming you have a collection of items
var data = new[]
{
    new { TypeCode = 1, User = "Don Smith" },
    new { TypeCode = 1, User = "Mike Jones" },
    new { TypeCode = 1, User = "James Ray" },
    new { TypeCode = 2, User = "Tom Rizzo" },
    new { TypeCode = 2, User = "Alex Homes" },
    new { TypeCode = 3, User = "Andy Bates" }
};

// Group the data by TypeCode to form columns
var columns = from item in data
             group item by item.TypeCode;

// Get the total number of rows based on the maximum number of items in each column
int rows = columns.Max(c => c.Count());

// Pivot the data into a two-dimensional array for the grid
string[,] grid = new string[rows, columns.Count()];

int rowIndex = 0;
foreach (var column in columns)
{
    foreach (var item in column)
    {
        grid[rowIndex, column.Key - 1] = item.User;
        rowIndex++;
    }
    rowIndex = 0;
}

// Print the pivot table
Console.WriteLine("Pivot Table:");
for (int i = 0; i < rows; i++)
{
    for (int j = 0; j < columns.Count(); j++)
    {
        Console.Write(grid[i, j] + "\t");
    }
    Console.WriteLine();
}
Copier après la connexion

Cette implémentation regroupe les données par TypeCode pour former des colonnes, calcule le nombre total de lignes en fonction du nombre maximum d'éléments dans chaque colonne et fait pivoter les données dans un tableau bidimensionnel adapté à la grille. affichage.

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