Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Melakukan Sambungan Luar Kiri dalam LINQ Menggunakan Kaedah Sambungan?

Bagaimana untuk Melakukan Sambungan Luar Kiri dalam LINQ Menggunakan Kaedah Sambungan?

Linda Hamilton
Lepaskan: 2025-01-24 10:01:09
asal
302 orang telah melayarinya

How to Perform Left Outer Joins in LINQ Using Extension Methods?

Gunakan kaedah sambungan LINQ untuk melakukan sambung luar kiri

Caburan luar kiri ialah operasi cantum yang mengembalikan semua baris dalam jadual di sebelah kiri (dipanggil jadual "ibu bapa") dan hanya baris yang sepadan dalam jadual di sebelah kanan (dipanggil jadual "anak"). Jika baris yang sepadan tidak ditemui dalam jadual anak, nilai pulangan untuk baris itu dalam jadual induk adalah batal.

Dalam LINQ, satu cara untuk melakukan cantuman luar kiri ialah menggunakan kaedah Join, yang mencipta jujukan ditaip tanpa nama yang mengandungi atribut daripada jadual induk dan anak. Walau bagaimanapun, cara yang lebih mudah untuk mencapai hasil yang sama ialah menggunakan kaedah sambungan GroupJoin dan SelectMany.

Sintaks gabungan luar kiri menggunakan kaedah sambungan adalah seperti berikut:

<code class="language-csharp">var query = parentTable.GroupJoin(
    childTable, 
    parentKeySelector,
    childKeySelector,
    (parent, child) => new { Parent = parent, Child = child.DefaultIfEmpty() })
    .SelectMany(
        x => x.Child,
        (x, y) => new { Parent = x.Parent, Child = y });</code>
Salin selepas log masuk

Dalam sintaks ini:

  • parentTable dan childTable ialah jadual untuk dicantumkan.
  • parentKeySelector dan childKeySelector ialah ungkapan lambda yang menentukan kunci yang digunakan untuk menyertai dua jadual.
  • Jenis tanpa nama dalam kaedah
  • GroupJoin menggabungkan baris ibu bapa dan anak.
  • Kaedah
  • DefaultIfEmpty() memastikan null dikembalikan untuk baris anak yang tidak mempunyai baris induk yang sepadan.
  • Kaedah
  • SelectMany meratakan jujukan jenis tanpa nama menjadi satu jujukan, dengan setiap elemen mewakili baris dalam jadual induk dan baris anak yang sepadan (atau batal jika tiada baris anak yang sepadan wujud).

Contoh

Pertimbangkan pertanyaan gabungan luar kiri berikut dalam SQL:

<code class="language-sql">SELECT f.*, b.*
FROM Foo f
LEFT JOIN Bar b ON f.Foo_Id = b.Foo_Id;</code>
Salin selepas log masuk

Pertanyaan ini boleh dinyatakan menggunakan kaedah sambungan seperti berikut:

<code class="language-csharp">var query = Foo.GroupJoin(
    Bar, 
    f => f.Foo_Id,
    b => b.Foo_Id,
    (f, b) => new { Foo = f, Bar = b.DefaultIfEmpty() })
    .SelectMany(
        x => x.Bar,
        (f, b) => new { Foo = f.Foo, Bar = b });</code>
Salin selepas log masuk

Pertanyaan ini akan mengembalikan urutan jenis tanpa nama, di mana setiap jenis mengandungi sifat daripada jadual Foo dan Bar. Jika satu baris dalam jadual Foo tidak mempunyai baris yang sepadan dalam jadual Bar, sifat Bar yang sepadan akan menjadi batal.

Atas ialah kandungan terperinci Bagaimana untuk Melakukan Sambungan Luar Kiri dalam LINQ Menggunakan Kaedah Sambungan?. 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