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>
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>
Sintaks kaedah (kurang biasa digunakan):
Sertai:
<code>Parent.Join(Child, p => p.Id, c => c.Id, (p, c) => new { p.Value, c.ChildValue })</code>
Sertai Kumpulan:
<code>Parent.GroupJoin(Child, p => p.Id, c => c.Id, (p, c) => new { Parent = p, Children = c })</code>
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>
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>
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: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