Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah LINQ Boleh Pivot Data dengan Cekap daripada Koleksi Enum dan Objek Pengguna untuk Paparan Grid?
Dalam senario yang anda berikan, anda mempunyai koleksi yang mengandungi enum (Kod Jenis) dan objek Pengguna yang perlu anda ratakan untuk paparan grid. Untuk mencapai ini, anda menghadapi kesukaran apabila mencuba pendekatan foreach. Nasib baik, LINQ menawarkan penyelesaian yang lebih elegan.
Menggunakan LINQ, anda boleh memutar data seperti berikut:
// 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(); }
Pelaksanaan ini mengumpulkan data mengikut TypeCode untuk membentuk lajur, mengira jumlah baris berdasarkan bilangan maksimum item dalam setiap lajur dan memaksi data ke dalam tatasusunan dua dimensi sesuai untuk paparan grid.
Atas ialah kandungan terperinci Bagaimanakah LINQ Boleh Pivot Data dengan Cekap daripada Koleksi Enum dan Objek Pengguna untuk Paparan Grid?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!