Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah LINQ Boleh Digunakan untuk Menjana Produk Cartesan Set Anak Anjing dengan Cekap?
Menjana Produk Cartesian Set Anak Anjing Menggunakan LINQ
LINQ menawarkan penyelesaian yang elegan untuk mencipta produk Cartesian, mencerminkan fungsi SQL. Mari kita menggambarkan ini dengan senario yang melibatkan orang, anjing mereka dan anak anjing yang dimiliki oleh setiap anjing. Objektifnya adalah untuk menjana semua kombinasi anak anjing yang mungkin, memilih satu anak anjing daripada setiap anjing yang dimiliki oleh seseorang.
Bilangan Set Diketahui
Jika bilangan set anjing (dan oleh itu set anak anjing) ditentukan terlebih dahulu, 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 semua kombinasi anak anjing, satu daripada setiap dog1
, dog2
dan dog3
.
Nombor Set Tidak Diketahui
Mengendalikan bilangan set anjing yang tidak diketahui memerlukan pendekatan yang lebih fleksibel:
CartesianProduct<T>
Kaedah: Kaedah rekursif CartesianProduct<T>
dicipta. Kaedah ini menerima urutan IEnumerable<T>
yang mewakili set anak anjing.
Pelaksanaan Rekursif: Kaedah CartesianProduct<T>
secara rekursif menjana semua kombinasi yang mungkin daripada jujukan input.
Menggunakan kaedah ini, produk Cartesian diperolehi dengan ringkas:
<code class="language-csharp">CartesianProduct(from dog in person.Dogs select dog.Puppies);</code>
Barisan tunggal ini menjana semua kemungkinan kombinasi anak anjing, memastikan satu anak anjing dipilih daripada setiap anjing kepunyaan orang itu.
Pendekatan berasaskan LINQ ini, memanfaatkan operasi set dan rekursi, menjana produk Cartesian dengan cekap tanpa mengira bilangan set input, menyediakan penyelesaian yang berkuasa dan boleh disesuaikan.
Atas ialah kandungan terperinci Bagaimanakah LINQ Boleh Digunakan untuk Menjana Produk Cartesan Set Anak Anjing dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!