Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Melakukan Gabungan Jadual Berbilang Menggunakan Ungkapan Lambda LINQ?

Bagaimana untuk Melakukan Gabungan Jadual Berbilang Menggunakan Ungkapan Lambda LINQ?

Patricia Arquette
Patricia Arquetteasal
2025-01-10 10:13:41559semak imbas

How to Perform Multiple Table Joins Using LINQ Lambda Expressions?

Gunakan ungkapan LINQ Lambda untuk melakukan cantuman berbilang jadual

LINQ membenarkan penggabungan berbilang jadual menggunakan ungkapan lambda. Katakan kita mempunyai tiga kelas:

<code>Product { Id, ProdName, ProdQty }
Category { Id, CatName }
ProductCategory { ProdId, CatId }</code>

Penggabungan menggunakan ungkapan Lambda

Jadual ini boleh digabungkan menggunakan kod berikut:

<code>var query = product.Join(
    productcategory,
    p => p.Id,
    pc => pc.ProdID,
    (p, pc) => new { product = p, productcategory = pc }
).Join(
    category,
    ppc => ppc.productcategory.CatId,
    c => c.Id,
    (ppc, c) => new { productproductcategory = ppc, category = c }
);</code>

Ini akan menjana objek kelas berikut:

<code>QueryClass { productproductcategory, category }</code>

Isi objek baharu

Untuk mengisi objek baharu dengan sifat hasil sambungan, anda boleh menggunakan kaedah Pilih berikut:

<code>var categorizedProducts = query.Select(m => new {
    ProdId = ???, 
    CatId = ???, 
    // 其他赋值
});</code>

Dapatkan nilai atribut

Harta khusus yang akan diberikan boleh diperolehi daripada objek yang disambungkan seperti berikut:

<code>ProdId = m.ppc.p.Id, // 或 m.ppc.pc.ProdId
CatId = m.c.CatId
// 其他赋值</code>

Alternatif sintaks pertanyaan

Sebagai alternatif, anda boleh menggunakan sintaks pertanyaan, yang menyediakan pendekatan yang lebih ringkas:

<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>

Hasil pertanyaan ini adalah sama dengan kaedah ungkapan lambda. Jika kebolehbacaan adalah lebih penting, adalah disyorkan untuk menggunakan sintaks pertanyaan.

Atas ialah kandungan terperinci Bagaimana untuk Melakukan Gabungan Jadual Berbilang Menggunakan Ungkapan Lambda 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