Rumah > pangkalan data > tutorial mysql > Bagaimanakah LINQ Boleh Digunakan untuk Mengira Hasil Cartesan Berbilang Set?

Bagaimanakah LINQ Boleh Digunakan untuk Mengira Hasil Cartesan Berbilang Set?

Barbara Streisand
Lepaskan: 2025-01-17 07:01:09
asal
254 orang telah melayarinya

How Can LINQ Be Used to Calculate the Cartesian Product of Multiple Sets?

Cari produk Cartesian menggunakan LINQ

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>
Salin selepas log masuk

Kemudian, gunakan fungsi pada setiap set anak anjing:

<code>var puppyCombinations = CartesianProduct(
    from dog in person.Dogs
    select dog.Puppies
);</code>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan