Menguasai Produk Cartesian LINQ untuk Struktur Objek Kompleks
Menjana semua kemungkinan kombinasi anak anjing daripada berbilang anjing memberikan cabaran unik apabila berurusan dengan struktur objek yang rumit. Nasib baik, LINQ menyediakan penyelesaian yang elegan.
Satu kaedah melibatkan Produk Cartesian, teknik yang menggabungkan berbilang set dengan cekap untuk menghasilkan semua pasangan yang mungkin. Jika bilangan set anjing diketahui terlebih dahulu (pada masa penyusunan), pertanyaan LINQ yang mudah sudah memadai:
<code class="language-csharp">from p1 in dog1.Puppies from p2 in dog2.Puppies from p3 in dog3.Puppies select new { p1, p2, p3 };</code>
Pertanyaan ini menghasilkan hasil seperti ini:
<code>{ {p11, p21, p31}, {p11, p21, p32}, {p12, p21, p31}, {p12, p21, p32} }</code>
Setiap elemen mewakili jenis tanpa nama yang mengandungi gabungan anak anjing yang unik.
Walau bagaimanapun, apabila bilangan set anjing adalah dinamik (tidak diketahui pada masa penyusunan), pendekatan yang lebih fleksibel diperlukan. Artikel Eric Lippert (https://www.php.cn/link/f28c49d8be62973ac7716e0b87dae2f9) menawarkan kaedah CartesianProduct<T>
yang direka untuk tujuan ini. Menggunakan kaedah ini, pertanyaan dipermudahkan kepada:
<code class="language-csharp">CartesianProduct(from dog in person.Dogs select dog.Puppies)</code>
Ini menghasilkan hasil yang sama seperti contoh sebelumnya—satu set jujukan, setiap satu mewakili gabungan anak anjing yang berbeza.
Kesimpulannya, fleksibiliti LINQ membolehkan pengiraan Produk Cartesian yang cekap pada struktur data yang kompleks, memudahkan analisis data yang berwawasan.
Atas ialah kandungan terperinci Bagaimana Menjana Semua Gabungan Anak Anjing Menggunakan Produk LINQ Cartesian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!