Menghasilkan Produk Cartesian dengan Cekap dengan LINQ
LINQ menawarkan cara yang berkuasa dan cekap untuk menjana produk Cartesian—semua kemungkinan gabungan elemen daripada berbilang set. Mari kita menggambarkan ini dengan contoh yang melibatkan orang, anjing mereka dan anak anjing mereka. Setiap orang memiliki berbilang anjing, dan setiap anjing mempunyai berbilang anak anjing. Objektifnya adalah untuk membuat senarai semua kombinasi anak anjing yang mungkin, memilih satu anak anjing daripada setiap anjing yang dimiliki oleh orang tertentu.
Mengendalikan Bilangan Tetap Set
Jika bilangan set (anjing) ditentukan terlebih dahulu, pertanyaan LINQ 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 dengan cekap menjana produk Cartesian anak anjing daripada tiga anjing pertama.
Mengatasi Bilangan Pembolehubah Set
Namun, apabila bilangan set adalah dinamik (bilangan anjing berbeza setiap orang), pendekatan yang lebih fleksibel diperlukan. Kaedah CartesianProduct<T>
Eric Lippert (seperti yang diterangkan dalam blognya) menyediakan penyelesaian yang boleh diguna semula untuk mengira produk Cartesian bagi bilangan set yang sewenang-wenangnya.
Kaedah ini membolehkan pengiraan produk Cartesian dengan bilangan set input yang berubah-ubah. Ia boleh digunakan seperti berikut:
<code class="language-csharp">CartesianProduct(from dog in person.Dogs select dog.Puppies)</code>
Ini secara ringkas menjana produk Cartesian set anak anjing untuk semua anjing kepunyaan orang tertentu. Hasilnya ialah satu set jujukan, setiap jujukan mewakili gabungan unik anak anjing, dengan satu anak anjing dipilih daripada setiap anjing.
Kesimpulannya, LINQ menyediakan kaedah yang bersih dan cekap untuk menjana produk Cartesian, sama ada berurusan dengan bilangan set tetap atau berubah-ubah, menjadikannya alat yang berharga untuk pelbagai tugas manipulasi data.
Atas ialah kandungan terperinci Bagaimanakah LINQ Boleh Menjana Produk Cartesan Set Bersaiz Boleh Ubah dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!