Maison >développement back-end >C++ >Comment effectuer plusieurs jointures de tables à l'aide d'expressions LINQ Lambda ?

Comment effectuer plusieurs jointures de tables à l'aide d'expressions LINQ Lambda ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-10 10:13:41561parcourir

How to Perform Multiple Table Joins Using LINQ Lambda Expressions?

Utilisez des expressions LINQ Lambda pour effectuer des jointures multi-tables

LINQ permet de joindre plusieurs tables à l'aide d'expressions lambda. Disons que nous avons trois classes :

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

Concaténation à l'aide d'expressions Lambda

Ces tables peuvent être jointes à l'aide du code suivant :

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

Cela générera des objets des classes suivantes :

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

Remplir un nouvel objet

Pour remplir un nouvel objet avec les propriétés du résultat de la connexion, vous pouvez utiliser la méthode Select suivante :

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

Obtenir la valeur de l'attribut

La propriété spécifique à attribuer peut être obtenue à partir de l'objet connecté de la manière suivante :

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

Alternatives à la syntaxe des requêtes

Vous pouvez également utiliser la syntaxe de requête, qui offre une approche plus concise :

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

Les résultats de cette requête sont les mêmes que ceux de la méthode d'expression lambda. Si la lisibilité est plus importante, il est recommandé d'utiliser la syntaxe de requête.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn