Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah kaedah lanjutan dapat memudahkan gabungan luar kiri di Linq?

Bagaimanakah kaedah lanjutan dapat memudahkan gabungan luar kiri di Linq?

Barbara Streisand
Barbara Streisandasal
2025-01-24 10:12:10760semak imbas

How Can Extension Methods Simplify Left Outer Joins in LINQ?

Kaedah pelanjutan sambungan kiri -outside menggunakan LINQ

Sambungan luaran di LINQ boleh dilaksanakan menggunakan gabungan kaedah

dan

. Walau bagaimanapun, untuk meningkatkan kebolehbacaan dan kesederhanaan kod, kaedah pengembangan menyediakan cara yang lebih mudah untuk menyatakan operasi ini. Join DefaultIfEmpty Gunakan kaedah lanjutan untuk melaksanakan sambungan kiri dan luaran, sila pertimbangkan sintaks berikut:

dalam tatabahasa ini:
<code class="language-csharp">Foo.GroupJoin(Bar, f => f.Foo_Id, b => b.Foo_Id, (f,b) => ...)
    .Select(...)</code>

berdasarkan elemen dalam urutan pertama (foo) mengikut pemilih utama, dan gunakan pemilih utama yang serasi untuk menyambungkannya ke urutan kedua (bar).
  • Hasilnya adalah koleksi penghitungan kumpulan logam. GroupJoin Unsur -unsur yang digunakan dalam kumpulan rata dan menggabungkannya dengan urutan pertama.
  • Ia digunakan untuk memastikan bahawa jika tidak ada elemen yang sepadan dalam urutan kedua, nilai senyap dikembalikan.
  • SelectMany Untuk melengkapkan sambungan luaran kiri, langkah -langkah selebihnya adalah pemilihan elemen gabungan. Dalam kes ini, anda boleh menggunakan kaedah untuk memproyeksikan atribut yang diperlukan bagi setiap kumpulan meta.
  • Contohnya, untuk menyatakan sambungan luaran kiri mengikut lajur FOO_ID antara FOO dan bar, anda boleh menggunakan kod berikut:
  • DefaultIfEmpty
  • Kod ini menjana koleksi penghitungan jenis tanpa nama, masing -masing mengandungi atribut FOO dari jadual FOO dan atribut bar dari jadual bar (jika tidak ada bar yang sepadan, ia adalah batal).

Atas ialah kandungan terperinci Bagaimanakah kaedah lanjutan dapat memudahkan gabungan luar kiri di Linq?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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