Rumah >pangkalan data >tutorial mysql >Bagaimanakah LINQ Boleh Digunakan untuk Mengira Hasil Cartesan Berbilang Set?
Operasi produk Cartesian menggabungkan berbilang set untuk mencipta set baharu yang mengandungi semua kemungkinan gabungan elemen dalam set input.
Untuk melaksanakan operasi produk Cartesian pada struktur kelas yang disediakan (di mana seseorang mempunyai berbilang anjing dan setiap anjing mempunyai berbilang anak anjing), LINQ boleh dimanfaatkan dengan berkesan.
Pertama, buat fungsi produk Cartesian yang mengambil beberapa set sebagai input:
<code>public static IEnumerable<IEnumerable<T>> CartesianProduct<T>(params IEnumerable<T>[] sets) { if (sets.Length == 0) { return new[] { Enumerable.Empty<T>() }; } return sets[0].SelectMany(x => sets.Skip(1).Aggregate( new[] { x }, (acc, set) => CartesianProduct(acc, set) // 修正此处 )); }</code>
Kemudian, gunakan fungsi pada setiap set anak anjing:
<code>var puppyCombinations = CartesianProduct( from dog in person.Dogs select dog.Puppies );</code>
Ini akan menjana jujukan jujukan, di mana setiap jujukan dalaman mewakili gabungan satu anak anjing daripada setiap anjing. Gabungan yang terhasil boleh diakses dan diproses bergantung pada keperluan. (Kod di sini telah dilaraskan sedikit untuk meningkatkan kebolehbacaan dan potensi kecekapan, bergantung pada pelaksanaan fungsi CartesianProduct
.)
Nota: Pelaksanaan fungsi CartesianProduct
di atas mungkin memerlukan penambahbaikan lanjut untuk mengendalikan koleksi kosong atau kes tepi lain untuk memastikan keteguhan dan kecekapannya. Pelaksanaan rekursif yang lebih bersih dan lebih mudah difahami mungkin lebih sesuai.
Atas ialah kandungan terperinci Bagaimanakah LINQ Boleh Digunakan untuk Mengira Hasil Cartesan Berbilang Set?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!