Sambungan berbilang medan LINQ: mengaitkan berbilang entiti dengan cekap
Dalam LINQ, menyambungkan berbilang entiti biasanya menggunakan kata kunci join
. Walaupun gabungan satu medan lebih biasa, gabungan berbilang medan boleh dilaksanakan dengan mudah melalui pelarasan sintaks yang mudah.
Sintaks gabungan berbilang medan
Sintaks untuk menyertai berbilang medan dalam satu pertanyaan LINQ adalah seperti berikut:
<code class="language-csharp">from x in entity join y in entity2 on new { x.field1, x.field2 } equals new { y.field1, y.field2 }</code>
new
mencipta jenis tanpa nama yang menggabungkan medan daripada dua entiti yang digunakan untuk penyertaan. Jenis tanpa nama di sebelah kiri tanda yang sama mewakili keadaan sambungan entiti pertama, dan sebelah kanan mewakili keadaan sambungan entiti kedua.
Contoh
Berikut ialah contoh:
<code class="language-csharp">var result = from x in entity join y in entity2 on new { x.field1, x.field2 } equals new { y.field1, y.field2 }</code>
Pertanyaan ini akan menyertai field1
dan field2
berdasarkan medan entity
dan entity2
, mengembalikan jujukan gabungan yang mengandungi rekod yang sepadan dengan medan yang ditentukan dalam kedua-dua entiti.
Nota lain
Perlu diingat bahawa jenis data medan sambungan mestilah serasi. Selain itu, kata kunci join
melakukan gabungan dalaman, yang bermaksud bahawa hanya rekod dengan nilai medan yang sepadan akan dikembalikan.
Jika anda perlu melakukan sambung luar kiri, anda boleh menggunakan operator GroupJoin
. Contohnya:
<code class="language-csharp">var result = from x in entity join y in entity2 on new { x.field1, x.field2 } equals new { y.field1, y.field2 } into yGroup from y in yGroup.DefaultIfEmpty()</code>
Pertanyaan ini akan melakukan gabungan luar kiri, memastikan semua rekod dalam jadual entity
dikembalikan, walaupun tiada rekod sepadan dalam jadual entity2
.
Atas ialah kandungan terperinci Bagaimana untuk Melakukan Gabungan Pelbagai Medan dalam Satu Pertanyaan LINQ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!