Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Melakukan Gabungan Kiri, Kumpulan Mengikut, dan Mengira Rekod Anak Bukan Nol menggunakan LINQ?

Bagaimana untuk Melakukan Gabungan Kiri, Kumpulan Mengikut, dan Mengira Rekod Anak Bukan Nol menggunakan LINQ?

Linda Hamilton
Lepaskan: 2025-01-08 20:01:43
asal
561 orang telah melayarinya

How to Perform a Left Join, Group By, and Count Non-Null Child Records using LINQ?

Gunakan LINQ untuk melaksanakan pengiraan gabungan kiri, pengumpulan dan sub-rekod bukan kosong

Dalam SQL, pertanyaan berikut melakukan cantuman kiri antara dua jadual, ParentTable dan ChildTable dan mengira bilangan rekod anak yang dikaitkan dengan setiap rekod induk:

<code class="language-sql">SELECT p.ParentId, COUNT(c.ChildId)
FROM ParentTable p
  LEFT OUTER JOIN ChildTable c ON p.ParentId = c.ChildParentId
GROUP BY p.ParentId</code>
Salin selepas log masuk

Tukar pertanyaan ini kepada LINQ kepada SQL menggunakan langkah berikut:

  1. Lakukan sambung kiri menggunakan kaedah Join dan DefaultIfEmpty:
<code class="language-csharp">from p in context.ParentTable
join c in context.ChildTable on p.ParentId equals c.ChildParentId into j1
from j2 in j1.DefaultIfEmpty()</code>
Salin selepas log masuk
  1. Hasil kumpulan mengikut ID ibu bapa:
<code class="language-csharp">group j2 by p.ParentId into grouped</code>
Salin selepas log masuk
  1. Kira bilangan rekod anak yang dikaitkan dengan setiap rekod ibu bapa:
<code class="language-csharp">select new { ParentId = grouped.Key, Count = grouped.Count() }</code>
Salin selepas log masuk

Walau bagaimanapun, kod di atas akan mengembalikan jumlah bilangan rekod anak untuk setiap rekod induk, termasuk nilai nol. Untuk mengira sub-rekod bukan kosong sahaja, ubah suai ungkapan Count seperti berikut:

<code class="language-csharp">select new { ParentId = grouped.Key, Count = grouped.Where(t => t.ChildId != null).Count() }</code>
Salin selepas log masuk

Ini akan memastikan bahawa hanya rekod kanak-kanak yang ChildId tidak kosong dikira. Pertanyaan LINQ terakhir akan mencerminkan dengan tepat logik pertanyaan SQL dan mengira sub-rekod bukan kosong dengan berkesan.

Atas ialah kandungan terperinci Bagaimana untuk Melakukan Gabungan Kiri, Kumpulan Mengikut, dan Mengira Rekod Anak Bukan Nol menggunakan 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