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.
À 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(); }
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!