Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk melakukan gabungan luar kiri di Linq tanpa menggunakan klausa Join-on-Equal-Equal-Into?

Bagaimana untuk melakukan gabungan luar kiri di Linq tanpa menggunakan klausa Join-on-Equal-Equal-Into?

DDD
DDDasal
2025-02-02 14:26:10934semak imbas

How to Perform a Left Outer Join in LINQ Without Using Join-On-Equals-Into Clauses?

c# linq kiri luar bergabung: Pendekatan alternatif

Artikel ini menunjukkan bagaimana untuk melakukan gabungan luar kiri di Linq ke objek tanpa menggunakan klausa tradisional

. Kami memanfaatkan pengendali join-on-equals-into dan from bersamaan dengan join untuk penyelesaian ringkas dan cekap. DefaultIfEmpty()

inilah sintaks alternatif:

<code class="language-csharp">var q =
    from l in lefts
    join r in rights on l.Key equals r.Key into ps_jointable
    from p in ps_jointable.DefaultIfEmpty()
    select new JoinPair { LeftId = l.Id, RightId = p?.Id ?? 0 };</code>
Pertanyaan LINQ ini melaksanakan gabungan luar kiri pada koleksi

dan lefts, menghasilkan koleksi baru rights objek. Bagi setiap item dalam JoinPair, ia cuba mencari item yang sepadan dalam lefts berdasarkan harta . Jika perlawanan wujud, rights dalam Key akan memegang RightId item yang dipadankan JoinPair. Jika tiada perlawanan dijumpai, Id lalai ke 0 menggunakan pengendali null-conditional (rights) dan pengendali pengarang null (). RightId ?. kaedah ?? adalah penting. Ia memastikan hasilnya dihasilkan walaupun tiada perlawanan yang terdapat dalam koleksi

. Dalam ketiadaan perlawanan,

mengembalikan nilai lalai (null dalam kes ini), yang kemudiannya ditangani dengan anggun oleh pengendali pengendali null-conditional dan null-coalescing. Pendekatan ini memberikan alternatif yang lebih mudah dibaca dan berpotensi lebih kepada sintaks DefaultIfEmpty() standard untuk gabungan luar kiri di LINQ. rights

Atas ialah kandungan terperinci Bagaimana untuk melakukan gabungan luar kiri di Linq tanpa menggunakan klausa Join-on-Equal-Equal-Into?. 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