Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah LINQ Boleh Memudahkan Pemingsi dan Penstrukturan Semula Data?

Bagaimanakah LINQ Boleh Memudahkan Pemingsi dan Penstrukturan Semula Data?

Mary-Kate Olsen
Lepaskan: 2025-01-05 15:33:40
asal
264 orang telah melayarinya

How Can LINQ Simplify Data Pivoting and Restructuring?

Memindahkan Data dengan LINQ

Dalam senario tertentu, penstrukturan semula data ke dalam format yang berbeza menjadi perlu. Satu tugas biasa ialah memutar data, mengubahnya daripada struktur jadual kepada susun atur yang lebih padat. Walaupun pendekatan berulang tradisional seperti gelung foreach boleh mencapai ini, pendekatan tersebut memperkenalkan cabaran dengan pengubahsuaian koleksi semasa lelaran. Masukkan LINQ, bahasa pertanyaan berkuasa yang memudahkan manipulasi data, menawarkan penyelesaian yang lebih bersih dan lebih cekap untuk memutar data.

Pertimbangkan koleksi objek yang mengandungi penghitungan (TypeCode) dan contoh Pengguna. Matlamatnya adalah untuk meratakan koleksi ini menjadi struktur seperti grid, di mana setiap TypeCode sepadan dengan lajur dan Nama Pengguna disusun dalam baris.

LINQ menyediakan cara yang mudah untuk mencapai operasi pangsi ini. Dengan mengumpulkan koleksi mengikut TypeCode dan kemudian memilih Nama pengguna sebagai tatasusunan untuk setiap kumpulan, kami boleh mencipta lajur dengan berkesan. Coretan kod berikut menunjukkan pendekatan ini:

// Sample data
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 by TypeCode and select User name arrays
var groups = from d in data
              group d by d.TypeCode
              into grp
              select new {
                  TypeCode = grp.Key,
                  Users = grp.Select(d2 => d2.User).ToArray()
              };
Salin selepas log masuk

Selepas mencipta lajur, kita perlu menentukan jumlah bilangan baris, iaitu panjang maksimum mana-mana tatasusunan pengguna dalam kumpulan. Dengan maklumat ini, kami boleh mengulangi setiap kumpulan dan memaparkan nama pengguna yang sepadan, melapik dengan nilai nol jika perlu.

// Find total number of rows
int rows = groups.Max(grp => grp.Users.Length);

// Output columns
foreach (var grp in groups) {
    Console.Write(grp.TypeCode + "\t");
}
Console.WriteLine();

// Output rows
for (int i = 0; i < rows; i++) {
    foreach (var grp in groups) {
        Console.Write((i < grp.Users.Length ? grp.Users[i] : null) + "\t");
    }
    Console.WriteLine();
}
Salin selepas log masuk

Dengan memanfaatkan keupayaan kumpulan dan pemilihan LINQ, kod ini membolehkan kami memutarkan data dan menjana output yang dikehendaki dengan cara yang ringkas dan cekap.

Atas ialah kandungan terperinci Bagaimanakah LINQ Boleh Memudahkan Pemingsi dan Penstrukturan Semula Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan