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
Lepaskan: 2025-01-24 10:12:10
asal
731 orang telah melayarinya

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

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!

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