Gunakan linq untuk menghasilkan semua kombinasi yang mungkin
Dalam pengaturcaraan, semua kombinasi elemen yang mungkin sering diperlukan dari pelbagai senarai. Isu ini menerangkan adegan yang perlu menggabungkan dua array untuk membuat satu set rentetan.
penyelesaian
Untuk menghasilkan semua kombinasi yang mungkin dari array, kita boleh menggunakan Descartes untuk mengumpul teknologi. Ini melibatkan penciptaan senarai baru, yang mengandungi semua kombinasi elemen yang mungkin dalam array input. Senarai yang dihasilkan akan mempunyai jumlah elemen yang sama dengan input panjang nombor input.
Linq (Integrasi Bahasa Siasatan) menyediakan cara yang elegan untuk melaksanakan pengumpulan descartes dan menghasilkan gabungan yang diperlukan. Kuncinya ialah menggunakan pengendali zip, yang menggabungkan unsur -unsur dalam dua urutan ke dalam urutan elemen tunggal.Kod berikut menunjukkan cara menggunakan LINQ untuk menghasilkan semua kombinasi yang mungkin:
di sini, fungsi CartesianProduct menghasilkan descartes urutan yang dicipta oleh Enumerable.range. Simbol pengkomputeran zip menggabungkan unsur -unsur dalam setiap urutan ke dalam rentetan.
<code class="language-csharp">var arr1 = new[] { "a", "b", "c" }; var arr2 = new[] { 3, 2, 4 }; var result = from cpLine in CartesianProduct( from count in arr2 select Enumerable.Range(1, count)) select cpLine.Zip(arr1, (x1, x2) => x2 + x1);</code>
Kaedah ini menyediakan kaedah yang secara langsung menghasilkan gabungan elemen yang mungkin dalam dua array. Ia menggunakan sintaks ekspresi Linq dan prinsip Descartes untuk mendapatkan hasil yang diperlukan dengan cekap.
Atas ialah kandungan terperinci Bagaimanakah Linq dapat menjana semua kombinasi rentetan yang mungkin dari dua tatasusunan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!