Maison >développement back-end >C++ >Comment les expressions LINQ Lambda peuvent-elles être utilisées pour effectuer efficacement des jointures multi-tables ?

Comment les expressions LINQ Lambda peuvent-elles être utilisées pour effectuer efficacement des jointures multi-tables ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-10 11:29:43690parcourir

How Can LINQ Lambda Expressions Be Used to Efficiently Perform Multi-Table Joins?

Maîtriser les jointures multi-tables avec les expressions LINQ Lambda

LINQ (Language Integrated Query) offre un moyen puissant et efficace d'interagir avec les bases de données. Une tâche fréquente dans la récupération de données consiste à joindre plusieurs tables. Ce guide montre comment effectuer ces jointures efficacement à l'aide des expressions lambda LINQ.

Considérons trois exemples de classes représentant des tables de base de données :

  • Produit : Id, ProdName, ProdQty
  • Catégorie : Id, CatName
  • Catégorie de produit : (table de jonction) ProdId, CatId
La méthode

LINQ Join facilite la jointure de ces tables. Voici un exemple :

<code class="language-csharp">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>

Ce code rejoint Product, ProductCategory et Category en fonction de leurs colonnes respectives Id et CatId. Le résultat, cependant, est un objet imbriqué.

Pour créer un résultat plus épuré, un seul objet contenant toutes les propriétés pertinentes, utilisez la méthode Select :

<code class="language-csharp">var categorizedProducts = query.Select(m => new { m.ProdId = ???, m.CatId = ???, //other assignments });</code>

Voici comment attribuer correctement les propriétés des tables jointes à ce nouvel objet :

<code class="language-csharp">var categorizedProducts = query.Select(m => new {
    ProdId = m.productproductcategory.product.Id, // or m.productproductcategory.productcategory.ProdId
    CatId = m.category.Id,
    // other property assignments from m.productproductcategory.product, m.productproductcategory.productcategory, and m.category
});</code>

Cette approche, combinant les expressions lambda LINQ avec Join et Select, fournit une méthode efficace pour les jointures multi-tables, aboutissant à un objet unique et facilement gérable contenant toutes les données nécessaires.

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