Heim >Backend-Entwicklung >C++ >Wie kann LINQ Daten aus einer Sammlung von Enums und Benutzerobjekten effizient für die Rasteranzeige bereitstellen?
In Ihrem gegebenen Szenario verfügen Sie über eine Sammlung mit Aufzählungen (TypeCode) und Benutzerobjekten, die Sie für eine Rasteranzeige reduzieren müssen. Um dies zu erreichen, stoßen Sie beim Versuch eines foreach-Ansatzes auf Schwierigkeiten. Glücklicherweise bietet LINQ eine elegantere Lösung.
Mit LINQ können Sie die Daten wie folgt Pivotieren:
// 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(); }
Diese Implementierung gruppiert die Daten nach TypeCode zum Bilden von Spalten, berechnet die Gesamtzahl der Zeilen basierend auf der maximalen Anzahl von Elementen in jeder Spalte und wandelt die Daten in ein zweidimensionales Array um, das für ein Raster geeignet ist Anzeige.
Das obige ist der detaillierte Inhalt vonWie kann LINQ Daten aus einer Sammlung von Enums und Benutzerobjekten effizient für die Rasteranzeige bereitstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!