Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menyertai Berbilang Jadual dengan Cekap Menggunakan Ungkapan Lambda LINQ?
Dalam LINQ, berbilang jadual boleh digabungkan untuk menggabungkan data daripada sumber data yang berbeza. Artikel ini menerangkan cara melakukan cantuman berbilang jadual menggunakan ungkapan lambda dalam LINQ.
Anda cuba menyertai tiga jadual: Produk, Kategori dan Kategori Produk. Selepas penggabungan, anda ingin mendapatkan satu kelas yang menggabungkan semua sifat kelas yang berkaitan. Walau bagaimanapun, kod yang anda tulis nampaknya tidak menghasilkan hasil yang diharapkan.
Apabila merantai berbilang sambungan dalam ungkapan lambda LINQ, hasil perantaraan diwakili sebagai jenis tanpa nama. Ini bermakna hasil setiap gabungan akan menjadi jenis tanpa nama baharu yang menggabungkan sifat jadual yang digabungkan.
Untuk mendapatkan satu kelas yang mengandungi semua atribut kelas yang berkaitan, anda perlu menentukan atribut yang ingin anda sertakan dalam hasil akhir. Ini boleh dilakukan menggunakan operator Pilih.
Berikut ialah kod yang diperbetulkan:
<code>var categorizedProducts = product .Join(productcategory, p => p.Id, pc => pc.ProdId, (p, pc) => new { p, pc }) .Join(category, ppc => ppc.pc.CatId, c => c.Id, (ppc, c) => new { ppc, c }) .Select(m => new { ProdId = m.ppc.p.Id, // 或 m.ppc.pc.ProdId CatId = m.c.CatId // 其他赋值 });</code>
Dalam kod ini, kami mula-mula melakukan cantuman antara tiga jadual dan menyimpan hasilnya dalam jenis tanpa nama perantaraan. Kami kemudian menggunakan operator Pilih untuk menayangkan hasil akhir ke dalam jenis tanpa nama baharu yang merangkumi sifat yang diperlukan (ProdId dan CatId).
Anda boleh memudahkan lagi kod anda dengan menggunakan sintaks pertanyaan dan bukannya ungkapan lambda:
<code>var categorizedProducts = from p in product join pc in productcategory on p.Id equals pc.ProdId join c in category on pc.CatId equals c.Id select new { ProdId = p.Id, // 或 pc.ProdId CatId = c.CatId // 其他赋值 };</code>
Sintaks pertanyaan lebih mudah dibaca dan lebih mudah difahami, terutamanya dalam pertanyaan kompleks yang melibatkan berbilang gabungan.
Atas ialah kandungan terperinci Bagaimana untuk Menyertai Berbilang Jadual dengan Cekap Menggunakan Ungkapan Lambda LINQ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!