Rumah > pembangunan bahagian belakang > C++ > Apakah Perbezaan Antara Kaedah Join dan GroupJoin LINQ?

Apakah Perbezaan Antara Kaedah Join dan GroupJoin LINQ?

Barbara Streisand
Lepaskan: 2025-01-22 12:37:10
asal
243 orang telah melayarinya

What's the Difference Between LINQ's Join and GroupJoin Methods?

Perbandingan Sertai dan Sertai Kumpulan dalam LINQ dengan Entiti

Memahami GroupJoin

GroupJoin, seperti Sertai, ialah kaedah LINQ untuk menggabungkan berbilang sumber data. Walau bagaimanapun, GroupJoin menghasilkan hasil dengan struktur yang berbeza daripada Sertai.

Sertai:

  • Lakukan cantuman dalaman dan hanya jana baris yang terdapat padanan dalam kedua-dua jadual yang digabungkan.
  • Keputusan: Jadual bercantum yang mengandungi lajur daripada kedua-dua jadual.

Sertai Kumpulan:

  • Lakukan cantuman luar untuk memadankan baris dalam jadual pertama dengan baris dalam jadual kedua.
  • Keputusan: Koleksi kumpulan, di mana setiap kumpulan mengandungi baris daripada jadual pertama dan baris padanannya daripada jadual kedua (atau senarai kosong jika tiada padanan).

Tatabahasa

Sintaks pertanyaan:

Sertai:

<code>from p in Parent
join c in Child on p.Id equals c.Id
select new { p.Value, c.ChildValue }</code>
Salin selepas log masuk

Sertai Kumpulan:

<code>from p in Parent
join c in Child on p.Id equals c.Id into g
select new { Parent = p, Children = g }</code>
Salin selepas log masuk

Sintaks kaedah (kurang biasa digunakan):

Sertai:

<code>Parent.Join(Child, p => p.Id, c => c.Id, (p, c) => new { p.Value, c.ChildValue })</code>
Salin selepas log masuk

Sertai Kumpulan:

<code>Parent.GroupJoin(Child, p => p.Id, c => c.Id, (p, c) => new { Parent = p, Children = c })</code>
Salin selepas log masuk

Kes penggunaan

1. Hasilkan sambungan luar yang rata:

  • GroupJoin boleh digunakan untuk mencipta gabungan luar yang diratakan yang mengandungi setiap baris dalam jadual pertama, walaupun tiada baris yang sepadan dalam jadual kedua. Ini dicapai dengan meratakan kumpulan:
<code>from p in Parent
join c in Child on p.Id equals c.Id into g
from c in g.DefaultIfEmpty()
select new { Parent = p.Value, Child = c?.ChildValue }</code>
Salin selepas log masuk

2. Simpan pesanan:

  • Sertai boleh digunakan untuk menapis senarai sambil mengekalkan susunan elemen. Dengan menggunakan jujukan luaran sebagai senarai pertama, anda boleh mengekalkan susunan elemen daripada senarai kedua:
<code>from id in ids
join p in parents on id equals p.Id
select p</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Apakah Perbezaan Antara Kaedah Join dan GroupJoin LINQ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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